C/C++ 打印自定义 EOL

C/C++ print custom EOL

我想在 Windows 上为 UNIX 生成一个文件(脚本)。所以我只需要输出LF个字符,而不需要输出CR个字符。

当我执行 fprintf(fpout, "some text\n"); 时,字符 \n 会自动替换为文件中的 \r\n

有没有办法专门输出 \n (LF) 个字符?

语言是 C++,但是 I/O 函数来自 C。

您可以用二进制模式打开文件,例如

FILE *fpout = fopen("unixfile.txt", "wb");

fprintf(fpout, "some text\n"); // no \r inserted before \n

因此,您传递给 fprintf 的每个字节都被解释为一个字节,而不是其他任何内容,这应该省略从 \n\r\n 的转换。

来自 std::fopen 上的 cppreference:

File access mode flag "b" can optionally be specified to open a file in binary mode. This flag has no effect on POSIX systems, but on Windows, for example, it disables special handling of '\n' and '\x1A'.