gpt4 book ai didi

c - 输入文本文件未完全读取

转载 作者:行者123 更新时间:2023-11-30 18:55:54 25 4
gpt4 key购买 nike

我在 main 中有以下程序

fgets(buffer, 99, stdin);
while (!feof(stdin))
{
printf("PrintF : %s\n", buffer);
fgets(buffer, 99, stdin);
}
return 0;

我启动一个 cmd 窗口并编译,然后使用文件参数运行该程序。

file.exe < samplefile.txt

在 txt 文件中我有以下几行

Hello this is

a sample file

by alanz2223

但是输出是

PrintF : Hello this is

PrintF : a sample file

它似乎省略了“by alanz2223”行。根据 fgets() 函数描述,它从流中读取字符并将它们作为 C 字符串存储到 str(第一个参数)中,直到读取 (num-1) 个字符或到达换行符或文件末尾,以先发生者为准。

根据这个描述,然后在“Hello this is”之后接近换行符,输出应该在那里结束,但它进入下一行并输出“一个样本文件”,然后接近换行符,但有一个下一行。似乎在第二行之后程序终止,就好像它接近文件末尾一样,但事实并非如此。

最佳答案

请记住,fgets 将文件缓冲区移动到它读取的行的末尾。最后一行没有被打印,因为该函数读取最后一行,然后将文件缓冲区移动到 feof 函数终止 while 循环的行尾。尝试在循环结束后添加 printf:

fgets(buffer, 99, stdin);
while (!feof(stdin))
{
printf("PrintF : %s\n", buffer);
fgets(buffer, 99, stdin);
}
printf("PrintF : %s\n", buffer);
return 0;

关于c - 输入文本文件未完全读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26207865/

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