我想在Windows上为UNIX生成文件(脚本)。因此,我只需要输出LF
个字符,而不输出CR
个字符。
当我执行fprintf(fpout, "some text\n");
时,文件中的字符\n
将自动替换为\r\n
。
是否可以仅输出\n
(LF
)个字符?
语言是C ++,但是I / O函数来自C。
答案 0 :(得分:9)
您可以以二进制模式打开文件,例如
FILE *fpout = fopen("unixfile.txt", "wb");
fprintf(fpout, "some text\n"); // no \r inserted before \n
因此,您传递给fprintf
的每个字节都被解释为一个字节,而没有别的,这应该省略从\n
到\r\n
的转换。
来自std::fopen上的cppreference:
可以选择指定文件访问模式标记“ b”以二进制模式打开文件。该标志在POSIX系统上不起作用,但是在Windows上,例如,它禁用对'\ n'和'\ x1A'的特殊处理。