【发布时间】:2021-02-06 12:22:08
【问题描述】:
我正在尝试制作一个将多个文件连接到一个的程序。我目前拥有的代码如下:
#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。
如何摆脱这个功能?
【问题讨论】:
-
fopen(..., "r")删除文本模式(而不是二进制模式)的"b"。 -
stackoverflow.com/a/28462221/4756299 可以在这里工作这很可能是这个问题的欺骗......
-
@pmg 但如果这是在 POSIX 系统上,文本模式将无济于事。
-
while (!feof(curr)) {...}stackoverflow.com/questions/5431941/… -
标题是
fgets(),但代码是fgetc()。真正的目标是什么?