• 締切済み

ファイルを読み込んだ時に同じ文字が重複した場合.kファイルに書き込まない

こんにちは。 テキストファイルの内容が KENIA=ナイル川 NORTH=小さな旅人 KENIA=せせらぎ 上記のファイルを読み込んだ際に下記のコードで実行すると .hファイルに書き込まれる内容は..... KENIA NORTH KENIA ですが同じ言葉が出現した場合(重複した場合)ファイルに書きまないようにしたいと思っています。すなわち KENIA NORTH   としたいと思っています。 この場合どうしたらいいでしょうか?? テキストファイルは例であり内容は不規則ですので。。。。 力をお貸しください。よろしくお願いします。 #include<stdio.h> int makemoutputhleftside(); int main(int argc,char **argv){ makemoutputhleftside(argv[1]); } int makemoutputhleftside(char sum[64]) { char buf[1024]; char cPid[256]; int iOid; FILE *ft; FILE *fh; char filename[64]; int i; strcpy(filename,sum); strcat(filename,".txt"); ft = fopen(filename,"r"); fh = fopen("moutput.h","w"); if (ft == NULL || fh == NULL) { printf("開けないファイルがあります。\n"); return 1; } /* ファイルを1行ずつ読み込む処理 */ while (fgets(buf, sizeof buf, ft) != NULL) { strcpy(cPid, strtok(buf, "=")); fprintf(fh, "#define %s \n", cPid); fclose(fh); fclose(ft); return 0; }

みんなの回答

noname#88772
noname#88772
回答No.2

 こんにちは。  No.1さんのご回答をよく理解してください。 そして実現するために必要なもの、処理を考えてみてください。 以下のものをソースに追加すれば実現できると思います。 ソース自体は書きません、頑張ってください。 必要なもの: /* 登録した単語の配列、リスト */ 必要な処理: /* 出てきた単語が登録されているかどうかをチェックする */ /* 登録されていればそのままスルーする */ /* 登録されていなければ、単語を登録してファイルに出力する */  ご参考までに。

  • Yanch
  • ベストアンサー率50% (114/225)
回答No.1

一度登場した、単語を、配列か、リスト構造で記憶しておいて、 ファイル出力前に、既出であるか調べるとよいのではないでしょうか。

lilhalileh
質問者

補足

早速のご返信ありがとうございます。 具体的に上記のソースだと どうすればいいでしょうか?? 昨日ずっと考えたんすけど全然分からなかったので......。 どうぞよろしくお願いします。

関連するQ&A