Я пишу программу, которая читает первые 20 строк текстового файла. Когда первые 20 строк прочитаны, пользователю предоставляется возможность продолжить чтение следующих 20 строк или выйти из программы. Однако, что происходит со мной, это то, что он печатает 20 строк, появляется приглашение пользователя, а затем он автоматически печатает следующие 20 строк, не дожидаясь ввода пользователя. После этого он напечатает приглашение пользователя, а затем дождется ввода. Я знаю, что это простая проблема, но я не вижу этого! Я немного изменил код в соответствии с ответами на мой вопрос:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
FILE *fp;
char fname[20];
char c, input;
int line;
line = 0;
printf("Please enter the name of the file you wish to view\n");
scanf("%s", fname);
fp = fopen(fname, "r");
if (fp == NULL)
{
printf("The file did not open correctly");
exit(0);
}
else
{
printf("The file opened correctly\n");
}
while(c != EOF && input != 'q')
{
c = getc(fp);
printf("%c", c);
if (c == '\n')
{
line++;
while (line==20)
{
line = 0;
printf("Press return to view the next 20 lines or press q to quit:");
scanf("%c", &input);
if (input == 'q')
{
return 0;
}
else if (input == '\n')
{
line++;
}
}
}
}
return 0;
}