从 C 中的 fgets() 获取乱码输出
Getting garbled output from fgets() in C
#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写的,我不知道是什么导致了这个乱码输出
#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写的,我不知道是什么导致了这个乱码输出