- 締切済み
ファイルを読み込んだ時に同じ文字が重複した場合.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; }
- みんなの回答 (2)
- 専門家の回答
みんなの回答
こんにちは。 No.1さんのご回答をよく理解してください。 そして実現するために必要なもの、処理を考えてみてください。 以下のものをソースに追加すれば実現できると思います。 ソース自体は書きません、頑張ってください。 必要なもの: /* 登録した単語の配列、リスト */ 必要な処理: /* 出てきた単語が登録されているかどうかをチェックする */ /* 登録されていればそのままスルーする */ /* 登録されていなければ、単語を登録してファイルに出力する */ ご参考までに。
- Yanch
- ベストアンサー率50% (114/225)
一度登場した、単語を、配列か、リスト構造で記憶しておいて、 ファイル出力前に、既出であるか調べるとよいのではないでしょうか。
補足
早速のご返信ありがとうございます。 具体的に上記のソースだと どうすればいいでしょうか?? 昨日ずっと考えたんすけど全然分からなかったので......。 どうぞよろしくお願いします。