我从关于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;
}
我得到的唯一结果是字母t
。 t
前面有一个小的透明方块。
为了您的信息,我在Windows上使用code :: blocks ide。以前的所有代码段(fputc()
,fputs()
...)运行正常。
答案 0 :(得分:0)
您的程序不会弄清楚文件中的内容并以合理的方式呈现它。因此,它会使富文本变得混乱并不奇怪。现代“文本”文件通常不仅仅是原始ASCII字符,还包含对宽字符,字节序标记和各种其他内容的支持。
答案 1 :(得分:-2)
这里的fgets只会执行一次,因为你正在使用if语句,它的分隔符是换行符(\ n)。使用while循环并在循环后放入fclose语句来读取所有行,如果那是你的目标。或者你有什么完成对一行很好,但输出取决于文件的内容。