将文本文件复制到 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