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;
}
我得到的唯一结果是字母t
。 t
前面有一个透明的小方块。
供您参考,我在 Windows 上使用 code::blocks ide。之前的所有代码片段(fputc()
、fputs()
...)都运行良好。
这里的 fgets 将只执行一次,因为您使用的是 if 语句并且它的分隔符是换行符 (\n)。使用 while 循环并在循环之后放置 fclose 语句以读取所有行,如果那是您的 goal.Or 你所做的一行没问题,但输出取决于文件的内容。
您的程序不会努力找出文件中的内容并以合理的方式呈现它。所以它把富文本弄得一团糟也就不足为奇了。现代 "text" 文件通常不仅仅是原始 ASCII 字符,还包含对宽字符、字节顺序标记和各种其他内容的支持。
我从关于 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()
...)都运行良好。
这里的 fgets 将只执行一次,因为您使用的是 if 语句并且它的分隔符是换行符 (\n)。使用 while 循环并在循环之后放置 fclose 语句以读取所有行,如果那是您的 goal.Or 你所做的一行没问题,但输出取决于文件的内容。
您的程序不会努力找出文件中的内容并以合理的方式呈现它。所以它把富文本弄得一团糟也就不足为奇了。现代 "text" 文件通常不仅仅是原始 ASCII 字符,还包含对宽字符、字节顺序标记和各种其他内容的支持。