将文本文件复制到 C 中的另一个文本文件时删除尾随白色 space
Removing a trailing white space when copying a text file to another text file in C
我正在尝试使用 fscanf/fprintf w/ %c 将字符从一个文本文件直接复制到另一个文本文件,但我在文件的最后留下了一个额外的白色 space 字符.
有什么方法可以 trim 输出文件中的最后一个白色 space 字符,或者告诉我的函数忽略最后一个白色 space?
此外,我的约束规定我不能使用数组来解析任何读取的字符。我的程序需要直接从输入文件读取并复制到输出文件。
下面是我的代码。
void copyFile(FILE* inputStream, FILE* outputStream){
while(!feof(inputStream)) {
int readCorrectly;
char readChar;
readCorrectly = fscanf(inputStream, "%c", &readChar);
if (readCorrectly) {
fprintf(outputStream, "%c", readChar);
}
}
}
这里的问题是当您尝试读取超过文件末尾时设置了文件结束指示符。
要解决此问题,您需要在 fscanf
之后添加检查 。
例如
if (feof(inputStream)) {
break;
}
这样做时,您还可以用无限循环替换 while 条件,即 while (1)
。
这里有更多关于 feof
工作原理的解释:
How feof() works in C
我正在尝试使用 fscanf/fprintf w/ %c 将字符从一个文本文件直接复制到另一个文本文件,但我在文件的最后留下了一个额外的白色 space 字符.
有什么方法可以 trim 输出文件中的最后一个白色 space 字符,或者告诉我的函数忽略最后一个白色 space?
此外,我的约束规定我不能使用数组来解析任何读取的字符。我的程序需要直接从输入文件读取并复制到输出文件。
下面是我的代码。
void copyFile(FILE* inputStream, FILE* outputStream){
while(!feof(inputStream)) {
int readCorrectly;
char readChar;
readCorrectly = fscanf(inputStream, "%c", &readChar);
if (readCorrectly) {
fprintf(outputStream, "%c", readChar);
}
}
}
这里的问题是当您尝试读取超过文件末尾时设置了文件结束指示符。
要解决此问题,您需要在 fscanf
之后添加检查 。
例如
if (feof(inputStream)) {
break;
}
这样做时,您还可以用无限循环替换 while 条件,即 while (1)
。
这里有更多关于 feof
工作原理的解释:
How feof() works in C