c: fgets 函数读取文件但不打印到终端

c: fgets function reads file but does not print out into terminal

我从关于 C 语言的教程中复制了以下程序 fgets()。它不会将文件的内容打印到终端:

#include <stdio.h>
#include <stdlib.h>

#define MAX_TEXT 1000

int main(int argc, char *argv[])
{
    FILE *file = NULL;
    char str[MAX_TEXT] = "";

    file = fopen("test.txt", "r");

    if(file != NULL) {
        fgets(str, MAX_TEXT, file);
        printf("%s", str);
        fclose(file);
    }
    else {
        printf("cannot read the file\n");
    }

    return 0;
}

我得到的唯一结果是字母tt 前面有一个透明的小方块。

供您参考,我在 Windows 上使用 code::blocks ide。之前的所有代码片段(fputc()fputs()...)都运行良好。

这里的 fgets 将只执行一次,因为您使用的是 if 语句并且它的分隔符是换行符 (\n)。使用 while 循环并在循环之后放置 fclose 语句以读取所有行,如果那是您的 goal.Or 你所做的一行没问题,但输出取决于文件的内容。

您的程序不会努力找出文件中的内容并以合理的方式呈现它。所以它把富文本弄得一团糟也就不足为奇了。现代 "text" 文件通常不仅仅是原始 ASCII 字符,还包含对宽字符、字节顺序标记和各种其他内容的支持。