c - 尝试使用 fgets() 从文件中读取时出现奇怪的问题

标签 c input buffer fgets

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

虽然我可以使用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");
}

您是否知道为什么会发生这种情况?

注意:我从 this 中获取了循环代码S'O 问题,所以我想这是对的。

最佳答案

这是不正确的:

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

尝试:

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

按照您的写法,它等同于 file = 0(假设文件已成功打开。如果没有,则与 file = 1 相同)。这不是您想要的。

关于c - 尝试使用 fgets() 从文件中读取时出现奇怪的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15710654/

相关文章:

html - 删除 Chrome 中的输入历史记录

html - 无法使用输入[值 =""] 选择空输入?

C# UDP 发送缓冲区

c - Linux 本地通信套接字 : Why is bind() not failing as expected?

html - 输入场效应

c - GHashTable 是如何使用哈希值来存储它的节点的呢?

javascript - 如何将二进制缓冲区解码为 node.js 中的图像?

buffer - 使用 BUFG 驱动时钟负载

c - 如何通过Scanf将二次方程作为输入?

c - 是否应该在每个声明中使用关键字 "inline"?