• ベストアンサー

文字列の比較について

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") どうすれば等しいと判定できるようになりますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • yosi_yosi
  • ベストアンサー率35% (165/468)
回答No.1

fgetsは改行文字も読み込みます。 strcmp(aaa, "99\n") もしくは strncmp(aaa, "99", 2) で試してはいかがでしょうか?

VitaminBB
質問者

お礼

回答ありがとうございます。 バッチリでした。

その他の回答 (2)

noname#20505
noname#20505
回答No.3

正しく判定できない理由は、#2さんの書き込みの通りだと思います。 #1さんが示されたサンプル以外に、改行を取り除いてから比較する方法が 有ります。例としてこんな感じです。(strtokを使用した場合)   char  *p;   if ((p = strtok(aaa, "\n")) == NULL) {     エラー処理   }   if (strcmp(p, "99") == 0) {     等しい処理   } 他に、strrchr関数等を使用して改行を取り除く方法が有りますが…。

VitaminBB
質問者

お礼

回答ありがとうございます。

回答No.2

aaaの末尾に改行コードがついていませんか? だとすると aaa : "99\n" であり、strcmp は 正値を返します。

VitaminBB
質問者

お礼

回答ありがとうございます。

関連するQ&A