Я пишу программу, которая должна читать ввод по одному символу за раз и преобразовывать этот ввод, и мне нужно иметь возможность различать конец строки (\ n) и конец стандартного ввода. По какой-то причине моя программа просто бесконечно зацикливается после того, как достигает последней строки и никогда не печатает ее. Я задаюсь вопросом, почему это никогда не ловит EOF? Я вынул часть кода снизу, потому что это просто тонна операторов if, заменяющих символы заглавными буквами и тому подобное. Я просто не понимаю, почему мой код никогда не ломается.
#include <stdio.h>
#include <string.h>
int main(void)
{
int MAXCHARS = 79;
int curr;
char currline[MAXCHARS*2];
char lastline[MAXCHARS*2];
memset(currline,0,158);
memset(lastline,0,158);
int pointer = 0;
while (1)
{
curr = getchar();
if (curr == EOF)
{
for (int i = 0; i < pointer; i++)
{
printf("%c", currline[i]);
}
break;
}
if (curr == '\n')
{
if (currline == lastline)
{
pointer = 0;
}
else
{
strcpy(lastline,currline);
for (int i = 0; i < pointer; i++)
{
printf("%c", currline[i]);
}
pointer = 0;
}
}
}
}