在Debian Linux中使用C的文件副本

file copy using c in debian linux

本文关键字:文件 副本 Debian Linux      更新时间:2023-10-16

任何人都可以向我展示

我的代码错误。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{
  FILE *fp1,*fp2;
  char ch,ch1;
  fp1=fopen("ma.dat","r");
  fp2=fopen("na.dat","w");
   while(!feof(fp1))
    {
      ch=fgetc(fp1);
      fprintf(fp2,"%c ",ch);
    }    
    fclose(fp1);
    fclose(fp2);
}

i'm试图从文件中读取并写入另一个文件。存在一些问题。

谢谢

更改您的时循环 -

while(1) // or TRUE or for(;;)
{
  ch=fgetc(fp1);
  // or if (fp1 == -1)
  if (feof(fp1)) { // you're printing eof to fp2... not a good idea.
    break;
  }
  fprintf(fp2, "%c", ch); // or fputc(ch, fp2); your string format included a space!
}

或较短(和惯用) -

while ((ch = fgetc(fp1)) != EOF) 
  fputc(ch. fp2);

或您可以使用特定于Linux的

fseek(fp1, 0L, SEEK_END);
long sz = ftell(fp1);
fseek(fp, 0L, SEEK_SET);
sendfile(fp2, fp1, 0, sz);