0

我正在尝试从 C 中的文件中读取,fgets()但是我遇到了以下问题:

虽然我可以使用以下方法成功打开文件fopen()

if ( file=fopen(filename, "r") == NULL )
{
    printf("Couldn't open specified file. Please try again.");
    exit(1);
}

我无法从中读出任何东西。我正在使用以下循环,尽管没有打印任何内容并且执行成功终止。

while ( (fgets(inputLine, 1023, file)) != NULL)
{
    printf("Hello world");
}

这与实际的文件名、文件大小或文件内容无关。似乎没有任何工作,并且在调试器中没有任何错误显示。我试过的一个示例文件是以下直接复制粘贴的:

test.txt
#include <stdio.h>
int main ()
{
       printf("Hello World");
}

您对为什么会发生这种情况有任何猜测吗?

注意:我已经从这个S'O question 中获取了循环代码,所以我猜它是正确的。

4

2 回答 2

6

这是不正确的:

if ( file=fopen(filename, "r") == NULL )

尝试:

if ( (file=fopen(filename, "r")) == NULL )

他们编写它的方式相当于file = 0(假设文件已成功打开。如果没有,则与 相同file = 1)。这不是你想要的。

于 2013-03-29T20:08:38.623 回答
0

除了您在 的条件下犯了一个错误之外,fopen片段还存在潜在问题,例如:

while ( (fgets(inputLine, 1023, file)) != NULL)
{
    printf("Hello world");
}

默认情况下,标准输出流stdoutline-buffered。这意味着您应该添加一个\n或调用fflush来强制数据被有效写入。

fflush(stdout);
于 2013-03-29T20:11:20.217 回答