• 締切済み

ファイル 構造体 配列

以下の課題がわからなくて困っています。 ファイルを読み込んで、条件に合うようにしたいです。 また、結果は新しいファイルに出力するみたいです。 -条件- トランザクションのファイルの番号のみ→消す masterにない番号は、トランザクション(文字列)を丸ごと追加 構造体を使う 1個の関数は、60行まで scanf禁止(fgets等) ●master.dat 00001,akai fumihito,akai@xxxxx.xx.jp 00002,ando yuki,ando@xxxxx.xx.jp 00003,ishikura toshiyuki,ishikura@xxxxx.xx.jp 00004,inoue miyuki,inoue@xxxxx.xx.jp 00005,iwata tomohiro,iwata@xxxxx.xx.jp 00006,ueda hiroshi,ueda@xxxxx.xx.jp 00007,osada kinya,osada@xxxxx.xx.jp 00008,odagiri daisuke,odagiri@xxxxx.xx.jp 00009,katsumata sakura,katsumata@xxxxx.xx.jp 00010,kumagai yuki,kumagai@xxxxx.xx.jp 00011,kobayashi yuki,yukikoba@xxxxx.xx.jp 00012,kobayashi yuta,yutakoba@xxxxx.xx.jp 00013,saito naoya,saito@xxxxx.xx.jp 00014,saito noritaka,sato@xxxxx.xx.jp 00015,shimura chie,simura@xxxxx.xx.jp 00016,sugihara takashi,sugihara@xxxxx.xx.jp 00017,chino kota,chino@xxxxx.xx.jp 00018,nakajima ayumu,nakajima@xxxxx.xx.jp 00019,natori hisao,natori@xxxxx.xx.jp 00020,nozawa ruriko,nozawa@xxxxx.xx.jp 00022,hihara yoshiyuki,hihara@xxx.xx.jp 00023,fujie mayumi,fujie@xxxxx.xx.jp 00024,fujimaki hiroyuki,fujimaki@xxxxx.xx.jp 00025,miura tsunayuki,miura@xxxxx.xx.jp 00026,mochiduki hideaki,mochiduki@xxxxx.xx.jp 00027,yazawa akihiko,yazawa@xxxxx.xx.jp 00028,yokomori chigusa,yokomori@xxxxx.xx.jp 00029,watanabe akira,awatanabe@xxxxx.xx.jp 00030,watanabe kentaro,kwatanabe@xxxxx.xx.jp ●trasaction.dat 00003 00004,inoue sachi 00007,,nagata@xxxxx.xx.jp 00018,nakadori ayumu,nakadori@xxxxx.xx.jp 00021,hatayama yurika,hatakeyama@xxxxx.xx.jp 00022,hinohara yoshiyuki,hinohara@xxx.xx.jp 00026 00029 00030,watanabe kenjiro 00031,yoshimura yoshikazu,yoshimura@xxxxx.xx.jp この2つを読み込む プログラム的には、 1.ファイル読み込み 2.ファイルを配列に入れる 3.配列で比較 -条件- トランザクションのファイルの番号のみ→消す masterにない番号は、トランザクション(文字列)を丸ごと追加 4.新しいファイルに結果を入れる 5.ファイルを閉じる 構造体では、 変更、追加、消去 になると思います。提出期限がまじかで焦っています。 #include<stdio.h> #include<string.h> #define BANGO 50 #define NAME 50 #define ADORESU 50 #define NUM 100 struct File { int bango[BANGO]; char name[NAME]; char adoresu[ADORESU]; }; int main(void) { char str[NUM]; int i; FILE *fp,*fp2,*fp3,*p1,*p2; fp = fopen("master.dat","r"); if(fp == NULL) { return 1; } printf("ファイルをオープンしました\n"); fp2 = fopen("transaction.dat","r"); if(fp2 == NULL) { return 2; } printf("ファイルをオープンしました"); fp3 = fopen("result.dat","w"); if(fp3 == NULL) { return 3; } printf("ファイルをオープンしました"); //while (fgets(str, NUM, fp1) != NULL && fgets(str, NUM, fp2) != NULL) { /*while((fgets(str,NUM,fp))!=NULL) { printf("%s",str); fputs(str,fp3); */ } } fclose(fp); fclose(fp2); fclose(fp3); return 0; }

みんなの回答

  • f272
  • ベストアンサー率46% (8469/18132)
回答No.1

あなたの言っている条件というのがよくわからん。 結果的にどういうファイルができればよいのか?

関連するQ&A