在C中从fgets()获取乱码输出

tian tong
#include <stdio.h>

int main(int argc, char *argv[]) {
  FILE *fp = fopen("sss", "w+");
  char buf[100];
  fputs("hello, world", fp);
  fflush(fp);
  fgets(buf, 100, fp);
  fputs(buf, stdout);
  fclose(fp);
  return 0;
}

有人可以教我我的代码有什么问题吗?以下是我的测试,但没有达到我的期望:

% clang test.c
% ./a.out
��h��%  
% cat test.c
hello, world%

我的假设是这是字符编码的问题,但是当我使用fgets从现有文件中读取文本时,它可以正常工作。我所有的文件(和代码)都是用Emacs编写的,我不知道是什么原因导致输出乱码

聚丙烯

fp是写完后的结尾。fseek再次使用读数之前,将其移至初始位置

fflush(fp);
fseek(fp, 0, SEEK_SET);
fgets(buf, 100, fp);

另一种选择是fclose它和fopen它一次。这取决于您想做什么。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章