微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

fgetc() 向换行添加回车

如何解决fgetc() 向换行添加回车

我正在尝试制作一个将多个文件连接为一个的程序。我目前拥有的代码如下:

#include <string.h>
#include <stdio.h>

void main(int n,char** args) {
    if (n < 2) printf("Too few arguments. Format: <output> [files...]");

    FILE* output = fopen(args[1],"w");

    for (int i = 2; i < n; i++) {
        FILE* curr = fopen(args[i],"rb");

        while (!feof(curr)) {
            int c = fgetc(curr);

            fputc(c,output);
        }

        fclose(curr);
    }

    fclose(output);
}

但是,当我在文件中有 \n 时,fgetc 在新文件中的 \n 后面添加了 \r。我试图以二进制形式打开文件,但它仍然在所有 \n-s 后面添加了额外的 \r。

如何摆脱此功能

解决方法

由于您以二进制模式 (YARN_CACHE_FOLDER) 打开输入文件,您将获得 CR/LF 行尾序列作为单独的字节 "rb"'\r',它们被存储在旧系统上作为 CR/CR/LF 序列进入输出文件,因为以文本模式打开的输出文件将 '\n' 转换为 CR/LF 并将 '\n' 存储为 CR。

同样以二进制模式打开输出文件,使用 '\r'

同时修复一些其他问题,如下所示:

"wb"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。