私は現在Cを学習しており、問題を解決しようとしています。私は、次の持つテキストファイル名elements.txt
あります単一のソースファイルから複数のファイルを作成する
elements.txt
Carbon (from Latin: carbo "coal") is a chemical element ..
Oxygen is a chemical element with symbol O ..
Platinum is a chemical element with symbol Pt ...
Silicon is a chemical element with symbol Si ...
Titanium is a chemical element with symbol Ti ...
を、私は、このような
carbon.txt
、
oxygen.txt
、
platinum.txt
、
silicon.txt
と
titanium.txt
からなどの要素に基づいて、複数のファイルを作成したい
elements.txt
。
これは私のsoureコードです:私は私のファイルが作成されますんが、酸素がプラチナとプラチナで印刷されます
void magic(){
FILE *fp,*fp1, *fp2, *fp3, *fp4, *fp5;
char *fn, *fn1, *fn2, *fn3, *fn4, *fn5;
int ch;
fn1 = "new/carbon.txt";
fn2 = "new/oxygen.txt";
fn3 = "new/platinum.txt";
fn4 = "new/silicon.txt";
fn5 = "new/titanium.txt";
fn = "elements.txt";
// Read file
fp = fopen(fn ,"r");
if(fp == NULL){
printf("Error opening %s for reading. Program terminated",fn);
}
// Write file
fp1 = fopen(fn1, "w");
fp2 = fopen(fn2, "w");
fp3 = fopen(fn3, "w");
fp4 = fopen(fn4, "w");
fp5 = fopen(fn5, "w");
if(fp1 == NULL || fp2 == NULL || fp3 == NULL || fp4 == NULL || fp5 == NULL){
printf("Error opening %s for wrting. Program terminated",fn);
}
while((ch= fgetc(fp)) != '\n')
fputc(ch, fp1);
while((ch= fgetc(fp)) != '\n')
fputc(ch, fp2);
while((ch= fgetc(fp)) != '\n')
fputc(ch, fp3);
while((ch= fgetc(fp)) != '\n')
fputc(ch, fp4);
while((ch= fgetc(fp)) != EOF)
fputc(ch, fp5);
printf("All files were created successfuly!.\n");
fclose(fp1);
fclose(fp2);
fclose(fp3);
fclose(fp4);
fclose(fp5);
fclose(fp);
}
int main(){
magic();
return 0;
}
、シリコンとチタンはチタンで印刷されます。文字を読んでいる間にループをしているときに間違いがあるようです。この問題を解決する方法が不明です。複数のファイルを読み込み、for-loopを使用して複数のファイルを書き込む方法はありますか?あなたの.txt
入力ファイルで
任意の助けをいただければ幸いです!ありがとう
"プログラムが終了しました"プログラムが横になっています... – MikeCAT
入力の空白行を正しく扱います。 – MikeCAT