- ベストアンサー
文字列の比較について
99としか書いてないファイルxxx.txtが有り、以下のようにして読み込みました。 char aaa[256]; if((fin=fopen("c:\\xxx.txt","r"))==NULL){ AfxMessageBox("読み込みファイルオープン出来ません"); return TRUE; } while((fgets(aaa,256,fin))!=NULL){ } fclose(fin); そしてstrcmpで比較したところ、1が返り等しくないと判定されます。 strcmp(aaa,"99") どうすれば等しいと判定できるようになりますか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
fgetsは改行文字も読み込みます。 strcmp(aaa, "99\n") もしくは strncmp(aaa, "99", 2) で試してはいかがでしょうか?
その他の回答 (2)
noname#20505
回答No.3
正しく判定できない理由は、#2さんの書き込みの通りだと思います。 #1さんが示されたサンプル以外に、改行を取り除いてから比較する方法が 有ります。例としてこんな感じです。(strtokを使用した場合) char *p; if ((p = strtok(aaa, "\n")) == NULL) { エラー処理 } if (strcmp(p, "99") == 0) { 等しい処理 } 他に、strrchr関数等を使用して改行を取り除く方法が有りますが…。
質問者
お礼
回答ありがとうございます。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
回答No.2
aaaの末尾に改行コードがついていませんか? だとすると aaa : "99\n" であり、strcmp は 正値を返します。
質問者
お礼
回答ありがとうございます。
お礼
回答ありがとうございます。 バッチリでした。