fread()将奇怪的东西放入char数组中

Cof*_*ain 2 c file-io xcode

我有一个文件,我想要阅读并打印到屏幕上.我正在使用XCode作为我的IDE.这是我的代码......

fp=fopen(x, "r");
char content[102];
fread(content, 1, 100, fp);
printf("%s\n", content);
Run Code Online (Sandbox Code Playgroud)

该文件的内容是"培根!" 打印出来的是什么\254\226\325k\254\226\234.

我已经谷歌搜索了这个答案,但C中文件I/O的文档看起来很稀疏,而且有什么不太清楚.(至少对我来说......)

编辑:我切换到只是阅读,而不是追加和阅读,并切换了两个中间参数fread().现在打印出Bacon!\320H\320这些东西意味着什么?反斜杠编号的数字或字母.我也按照建议改变了打印方式.

das*_*ght 9

您正在打开文件以进行追加和阅读.您应该打开它进行读取,或将读指针移动到您要读取的位置(开始,我假设).

FILE *fp = fopen(x, "r");
Run Code Online (Sandbox Code Playgroud)

要么

FILE *fp = fopen(x, "a+");
rewind(fp);
Run Code Online (Sandbox Code Playgroud)

此外,fread(...)不会将您的字符串置零,因此您应该在打印之前将其终止:

size_t len = fread(content, 1, 100, fp);
content[len] = '\0';
printf("%s\n", content);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!最终修复它的是`content [len] ='\ 0';`. (2认同)