【问题标题】:Removing a trailing white space when copying a text file to another text file in C将文本文件复制到 C 中的另一个文本文件时删除尾随空格
【发布时间】:2020-12-01 15:04:21
【问题描述】:

我正在尝试使用 fscanf/fprintf w/ %c 将字符从一个文本文件直接复制到另一个文本文件,但在文件末尾留下了一个额外的空白字符。

有没有办法可以修剪输出文件中的最后一个空白字符或告诉我的函数忽略最后一个空白?

此外,我的约束条件是不允许我使用数组来解析任何读取的字符。我的程序需要直接从输入文件读取并复制到输出文件。

下面是我的代码。

void copyFile(FILE* inputStream, FILE* outputStream){
   
   while(!feof(inputStream)) {
      int readCorrectly;
      char readChar;
      
      
      readCorrectly = fscanf(inputStream, "%c", &readChar);
      
      
      if (readCorrectly) {
         fprintf(outputStream, "%c", readChar);
      }  
   }
}

【问题讨论】:

    标签: printf scanf whitespace removing-whitespace


    【解决方案1】:

    这里的问题是当您尝试读取文件末尾时会设置文件结束指示器。

    要解决此问题,您需要在fscanf 之后添加一个检查。 例如

    if (feof(inputStream)) {
        break;
    }
    

    这样做,您还可以用无限循环替换您的 while 条件,即while (1)

    这里有更多关于feof 工作原理的解释: How feof() works in C

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-05
      • 1970-01-01
      相关资源
      最近更新 更多