c 程序: #include int main() { FILE *fd = fopen("tmpfile.txt", "r"); char c; while ((c = getc(fd)) != EOF) { printf("%d, ", c); } } tmpfile.txt 内容: 1 2 程序输出结果: 49, 10, 50, 程序不应该是输出: 49, 13, 10, 50, 吗? 补充:在 win11 下执行
首先,Windows 不可能要求 txt 文件一定按某种格式存储,或许你的 txt 文件里面只有三个字节。所谓 Windows 的换行是 \r\n 是指通常的 Windows 软件会这样存储换行,但如 VSCode 等代码工具可以配置换行方式。 其次,这是 C 语言的抽象,任何平台的行分隔序列、行结尾序列,在文本模式下都会在通过 FILE 进入 C 语言时被变换为 \n ,并且 \n 会在通过 FILE 进入平台时换成平台特定的序列。要获得文件的字节内容,应该用二进制操作,即 rb 、wb 。