c - C 如何在不更改为 CR LF 的情况下将 LF 输出到标准输出?

标签 c windows line-endings newline

在 Windows 上

#include <stdio.h>

int main() { 
    putc('A',stdout);
    putc('\r',stdout); 
    putc('\n',stdout);
}

输出

A<CR><CR><LF>

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

我需要它来将简单的套接字流读取器转换为标准输出。 我试过 CodeGear 的 bcc32、mingw、tinycc 都产生相同的结果,将 putc 更改为 putchar、fputc、fwrite 也无济于事。

最佳答案

MSVC 的解决方案是:

#include <io.h>
#include <fcntl.h>
...
_setmode(1,_O_BINARY)

其他运行时可能会提供 C99 解决方案或替代方法。编辑:我相信 setmode([file number],O_BINARY) 起源于 Borland Turbo C,其他用于 MS-DOS 和 Windows 的编译器模仿了它。 _ 前缀用于保持命名空间干净,某些编译器可能不存在。

关于c - C 如何在不更改为 CR LF 的情况下将 LF 输出到标准输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5813301/

相关文章:

windows - 符号 § 的 Eclipse 问题

python - 更新现有的 PyInstaller 包

linux - Git 状态忽略行尾/相同文件/windows & linux 环境/dropbox/meld

windows - 为什么 Windows 使用 CR LF?

c - 计划需要优化以实现最低成本

c - 即使没有内存泄漏,Valgrind 也会出现无效读取错误

c - 16F819 原始类型问题中的 GPS SD 卡数据记录器

java - 如何在java中检查远程Windows上的进程是否启动

scripting - 如何确定文件的行尾

c - 给定字符的大小是多少?