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

时间:2017-05-15 02:53:20

标签: c fgets

我从关于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() ...)运行正常。

2 个答案:

答案 0 :(得分:0)

您的程序不会弄清楚文件中的内容并以合理的方式呈现它。因此,它会使富文本变得混乱并不奇怪。现代“文本”文件通常不仅仅是原始ASCII字符,还包含对宽字符,字节序标记和各种其他内容的支持。

答案 1 :(得分:-2)

这里的fgets只会执行一次,因为你正在使用if语句,它的分隔符是换行符(\ n)。使用while循环并在循环后放入fclose语句来读取所有行,如果那是你的目标。或者你有什么完成对一行很好,但输出取决于文件的内容。