ファイル 構造体 配列
以下の課題がわからなくて困っています。
ファイルを読み込んで、条件に合うようにしたいです。
また、結果は新しいファイルに出力するみたいです。
-条件-
トランザクションのファイルの番号のみ→消す
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;
}
お礼
ありがとうございます。 試したところ、問題が解決しました!!! C言語出身には難しい考え方ですね・・・ ありがとうございました。