• ベストアンサー

文字列の比較に関する質問

文字列をif文で比較したいのですが、まず下記の例だと char *a a="a"; if(a=="a"){ printf("等しい"); }else{ printf("等しくない"); } 文字列は等しくなるのですが下記の例ではなりません 何故なのでしょうか。 read(s_sock,&buf,sizeof(buf)) if(a=="GET"){ printf("TRUE") }else{ printf("FALSE"); }

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

文字列の比較には strcmp を使ってください。 a=="a" のような等値検査ではアドレスが同じかどうかを調べています。 コンパイラによっては、定数文字列は同じものを使う(省スペース)ために等しいという結果が出る場合がありますが、基本的に確保された文字列のアドレス(格納先)が同じであるとは限りませんから、一般的にはそれ(アドレスを調べて)で文字列の等値を調べることはできません。

tukai
質問者

お礼

詳しく説明してくださり有難うございました。 かなり参考になりました

その他の回答 (1)

回答No.1

文字列の比較に比較演算子(==,!=,<,>,<=,>=)を 用いてはなりません(期待する結果は得られません)。 # 前者は'たまたま'一致しただけ。 正しくは関数 strcmp を使います。

tukai
質問者

お礼

有難うございました。 strcmp関数を使えばよろしいのですね。

関連するQ&A

専門家に質問してみよう