• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語 strcmp 半角スペースがあるとだめ?)

C言語 strcmp 半角スペースがあるとだめ?

このQ&Aのポイント
  • C言語 strcmpで文字列の比較がうまくいかない理由
  • strcmp関数は半角スペースを区切り文字として認識するため、文字列内の半角スペースが比較の際に問題となる可能性があります
  • 半角スペースを含む文字列の比較を行う場合は、半角スペースを特殊文字としてエスケープする必要があります

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

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

scanf()で Hello World! のように半角空白を入れたのであれば、 今のコードではinput[]に Hello までしか入っていないはずです。printf()か何かで確認してみてください。 scanf()における書式文字列の見直しが必要でありそうです。

purogu2017
質問者

お礼

回答有難うございます。

purogu2017
質問者

補足

printfでinputの内容を確認したところたしかにHelloまでしか入っていませんでした。 scanfについて調べてみたいと思います。

その他の回答 (3)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.4

scanfの%sは、「次の空白文字まで読み込む」です。 行全体を読み込むのは、fgets関数を使って下さい。この場合は、末尾の改行文字まで入力されるので、それを取り除いてから比較することになります。 scanfの書式文字指定は難解なので、初心者はscanfを使わない方が良いです。

purogu2017
質問者

お礼

回答有難うございます。

purogu2017
質問者

補足

fgetsを使えばいいんですね。わかりました。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.3

>同じはずなのですが違いますと出力されます。。 strcmp("Hello World!", "Hello World!") で調べてみたらどうですか。

purogu2017
質問者

お礼

回答有難うございます。

purogu2017
質問者

補足

scanfによる読み込みがうまくいっていなかったのが原因でした。

  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.1

コンピュータの世界では半角スペースも文字です。ただそれだけのことです。 >半角スペースがあると比較できない というのは違っています。 「Hello World!」と 「Hello World!」は同じ文字列だと判断されるはずですが。

purogu2017
質問者

お礼

回答有難うございます。

purogu2017
質問者

補足

同じはずなのですが違いますと出力されます。。 実行結果 ------------------- Hello World! >Hello World! 違います。 --------------------