使用c复制文本文件

标签 c arrays string file

我现在想做的是有一个输入文本文件,将其内容加载到二维数组中,对其执行某些操作,然后将其放入另一个文件中。对我来说最重要的问题是保持原始文件的结构。这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int main(void)
 {
  FILE *ifp, *ofp;
  char buffer[100];
  int i, c;

  ifp=fopen("test.in", "r");
  ofp=fopen("test.out", "w");

  while (!feof(ifp)){
  if(fscanf(ifp, "%s", buffer) != 1)
   break;
  fprintf(ofp, "%s", buffer); 
}  
return 0;
}

我的输入:

aaa bb bbb
bbbbb bbbb aa

和输出:

aaabbbbbbbbbbbbbbaa

我为 EOL 或 EOF 识别所做的一切尝试都会导致无限循环。使用“%c”而不是“%s”执行任何操作都会导致更差的输出。提前致谢。 编辑:我知道我可以将输出设为单词之间有空格,或者将每个单词放在新行中,但我不知道如何从这里得到最终结果。

最佳答案

使用“%c”

#include <stdio.h>

int main(void)
{
  FILE *ifp, *ofp;
  char buffer;

  ifp=fopen("test.in", "r");
  if(ifp==NULL)return 1;
  ofp=fopen("test.out", "w");
  if(ofp==NULL){
    fclose(ifp);
    return 1;
  }

  for(;;){
    if(fscanf(ifp, "%c", &buffer) != 1)
      break;
    fprintf(ofp, "%c", buffer); 
  }
  fclose(ifp);
  fclose(ofp);
  return 0;
}

getc()

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  FILE *ifp, *ofp;
  int buffer;

  ifp=fopen("test.in", "r");
  if(ifp==NULL)return 1;
  ofp=fopen("test.out", "w");
  if(ofp==NULL){
    fclose(ifp);
    return 1;
  }

  for(;;){
    if((buffer = getc(ifp)) != EOF)
      break;
    putc(buffer, ofp); 
  }
  fclose(ifp);
  fclose(ofp);
  return 0;
}

您不需要 feof() 因为用于读取的函数会检测 EOF。

另外,不要忘记检查文件是否已成功打开并关闭打开的文件。

关于使用c复制文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33940062/

相关文章:

c - C语言获取Linux系统信息

c - C链表问题

通过混合项递归复制两个链表

Javascript 将 2 个数组合并到第三个数组中以获取所需的所有数据

c - 如果指定数字位于排序数组的末尾或开头,则二进制搜索函数无法找到它们

Java,如何将值添加到对象数组

c++ - 从 2D 网格上的点向外遍历的好算法是什么?

c - 使用 strtol 的十六进制数 (str) 解释

javascript正则表达式不匹配一个词

string - 霍夫曼编码