-1

次の条件で、あるファイルの内容を別のファイルにコピーする C プログラムが必要です。

1.) データを読み取るファイルが存在する場合と存在しない場合があります。

2.) データのコピー先のファイルが存在する場合と存在しない場合があります。

ファイルが存在する場合、データは直接コピーされ、ファイルが存在しない場合は、ファイルを作成してデータを入力し、後でファイルの内容を他のファイルにコピーするオプションが必要です。

次のコードを作成しました。

現在、私の変更されたコードは次のとおりです。

#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
void main()
{
 FILE *f1,*f2;
 char c;
 char name1[20],name2[20];
 clrscr();
 setvbuf(stdout, 0, _IONBF, 0);
 printf("\nEnter the source file name :");
 scanf("%s",name1);
 if((f1=fopen(name1,"r"))==NULL)
 {
  fclose(f1);
  f1=fopen(name1,"w");
  printf("\nThe specified file does not exist \nNew file will be created");
  printf("\nEnter the data for the new file : ");
  while((c=getchar())!=EOF)
  {
   putc(c,f1);
  }
  fclose(f1); 
 }
 f1=fopen(name1,"r");
 printf("\nEnter the destination file name :");
 scanf("%s",name2);
 f2=fopen(name2,"w+");
 while((c=getc(f1))!=EOF)
 {
  putc(c,f2);
 }
 rewind(f1);
 rewind(f2);
 printf("The data in the source file is :\n");
 while((c=getc(f1))!=EOF)
 {
  printf("%c",c);
 }
 printf("\nThe data in the destination file is :\n");
 while((c=getc(f2))!=EOF)
 {
  printf("%c",c);
 }
 fclose(f1);
 fclose(f2);
 fflush(stdin);
 getch();
}

ただし、プログラムはソース ファイルが既に存在する場合にのみ正常に動作します。新しいファイルを作成すると、宛先ファイル名の入力が行われず、宛先ファイル file のデータは空白になります。それで、私は今何をすべきですか?

動作させるには何を変更する必要がありますか? あなたの選んだコードも教えてください...ありがとう!

4

2 に答える 2