如何解决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 举报,一经查实,本站将立刻删除。