C 尝试使用fgets()读取文件时出现奇怪问题
我试图使用C 尝试使用fgets()读取文件时出现奇怪问题,c,input,buffer,fgets,C,Input,Buffer,Fgets,我试图使用fgets()从C中读取文件,但遇到以下问题: 虽然我可以使用fopen()成功打开文件: 我什么也看不懂。我正在使用下面的循环,尽管没有打印任何内容并且执行成功终止 while ( (fgets(inputLine, 1023, file)) != NULL) { printf("Hello world"); } 这与实际文件名、文件大小或文件内容无关。在调试器中,似乎没有任何东西工作,也没有任何东西显示为错误。我尝试过的一个示例文件是以下直接复制和粘贴的: test.tx
fgets()
从C中读取文件,但遇到以下问题:
虽然我可以使用fopen()
成功打开文件:
我什么也看不懂。我正在使用下面的循环,尽管没有打印任何内容并且执行成功终止
while ( (fgets(inputLine, 1023, file)) != NULL)
{
printf("Hello world");
}
这与实际文件名、文件大小或文件内容无关。在调试器中,似乎没有任何东西工作,也没有任何东西显示为错误。我尝试过的一个示例文件是以下直接复制和粘贴的:
test.txt
#include <stdio.h>
int main ()
{
printf("Hello World");
}
test.txt
#包括
int main()
{
printf(“你好世界”);
}
你能猜到为什么会这样吗
注意:我从S'O问题中提取了循环代码,因此我猜它是正确的。这是不正确的:
if ( file=fopen(filename, "r") == NULL )
尝试:
它们的编写方式相当于file=0
(假设文件已成功打开。如果未成功打开,则与file=1
相同)。这不是您想要的。这是不正确的:
if ( file=fopen(filename, "r") == NULL )
尝试:
它们的编写方式相当于
file=0
(假设文件已成功打开。如果未成功打开,则与file=1
相同)。这不是您想要的。除了您在fopen
的情况下犯了一个错误之外,代码片段还有一个潜在的问题,例如:
while ( (fgets(inputLine, 1023, file)) != NULL)
{
printf("Hello world");
}
默认情况下,标准输出流stdout
是行缓冲的。这意味着您应该添加\n
或调用fflush
,以强制有效地写入数据
fflush(stdout);
除了您在
fopen
的情况下犯了错误之外,代码段还有一个潜在问题,例如:
while ( (fgets(inputLine, 1023, file)) != NULL)
{
printf("Hello world");
}
默认情况下,标准输出流stdout
是行缓冲的。这意味着您应该添加\n
或调用fflush
,以强制有效地写入数据
fflush(stdout);
不要忘记在
stdout
上的错误消息末尾添加一个\n
来刷新流。当程序终止时,应该刷新流。能否显示整个程序源代码?在错误消息中,文件名远比字符串“specified file”有用。尝试perror(文件名)
不要忘记在stdout
上的错误消息末尾添加一个\n
来刷新流。当程序终止时,应该刷新流。您能显示整个程序源吗?在错误消息中,文件名远比字符串“specified file”有用。尝试perror(文件名)代码>非常感谢。有时我会心烦意乱。后来我自己把括号去掉了,忘了放回去。非常感谢。有时我会心烦意乱。后来我自己去掉了那些括号,忘了把它们放回去。