You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C语言中读取并打印.txt文件中的CR与LF字符?

问题解答

为什么读不到CR字符?

Windows下用标准C库的fopen("filename.txt", "r")打开文件时,默认是文本模式,这个模式会自动把文件里的CRLF(\r\n,即ASCII 13+10)转换成单个LF(\n)。所以你用getc()读取时,CR已经被系统自动过滤掉了,自然找不到它的踪迹。

如何读取并打印CR字符?

要读取原始的CR字节,必须以二进制模式打开文件,也就是打开时用"rb"参数:

FILE *fp = fopen("your_file.txt", "rb");
if (fp == NULL) {
    // 处理文件打开失败逻辑
    return 1;
}

用二进制模式打开后,getc()就能读到原始的CR(ASCII 13)和LF(ASCII 10)字节了。

直接打印CR字符的话,终端只会将光标移到行首,看不到实际字符,建议转成ASCII码或标识性文本输出:

int c;
while ((c = getc(fp)) != EOF) {
    if (c == '\r') {
        printf("[CR (ASCII 13)]");
    } else if (c == '\n') {
        printf("[LF (ASCII 10)]\n");
    } else {
        printf("%c", c);
    }
}

Linux系统处理行尾的特点

Linux/Unix类系统确实只用单个LF(\n)作为行尾标识,不存在CR的冗余字节。不管以文本模式还是二进制模式打开文件,读到的都是原始的LF字节,文件大小和字符计数(换行符按单个字符计算)完全匹配,处理时不需要考虑行尾转换的额外逻辑,确实更简便。

内容的提问来源于stack exchange,提问作者Urban Županič

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 01:35:57