如何将C输出LF输出到标准输出而不更改为CR LF?

Dan*_*ung 6 c windows newline line-endings

在Windows上

#include <stdio.h>

int main() { 
    putc('A',stdout);
    putc('\r',stdout); 
    putc('\n',stdout);
}
Run Code Online (Sandbox Code Playgroud)

输出

A<CR><CR><LF>
Run Code Online (Sandbox Code Playgroud)

如何在不自动转换为CR LF的情况下将LF char写入stdout?

我需要它来简单的套接字流读取器到stdout.我尝试过来自CodeGear的bcc32,mingw,tinycc都产生相同的结果,将putc改为putchar,fputc,fwrite也无济于事.

Ran*_*832 11

MSVC解决方案是:

#include <io.h>
#include <fcntl.h>
...
_setmode(1,_O_BINARY)
Run Code Online (Sandbox Code Playgroud)

其他运行时可以提供C99解决方案或替代方式.编辑:我相信setmode([file number],O_BINARY)起源于Borland Turbo C,其他MS-DOS和Windows编译器模仿它.完成_前缀是为了保持名称空间的清洁,并且某些编译器可能不存在.