gpt4 book ai didi

c - 虽然循环重复但不知道为什么

转载 作者:太空宇宙 更新时间:2023-11-04 05:44:54 25 4
gpt4 key购买 nike

我正在编写一个程序来读取文本文件的前 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;
}

最佳答案

line = line++;

递增后,你的行总是0。只使用:

line++;

编辑:好的,所以这不是问题所在。我已经运行了你的程序,问题是当你在第一个 scanf 中输入文件名时,你按下回车键,所以程序会读取它。由于某种原因,此输入(或换行符)在第二个 scanf 中被读取为输入。只需在第一个后添加一个虚拟 scanf 即可吸收此换行符:

printf("Please enter the name of the file you wish to view\n");
scanf("%s", fname);
scanf("%c", &input); // dummy scanf

关于c - 虽然循环重复但不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8399282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com