- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語 strcmp 半角スペースがあるとだめ?)
C言語 strcmp 半角スペースがあるとだめ?
このQ&Aのポイント
- C言語 strcmpで文字列の比較がうまくいかない理由
- strcmp関数は半角スペースを区切り文字として認識するため、文字列内の半角スペースが比較の際に問題となる可能性があります
- 半角スペースを含む文字列の比較を行う場合は、半角スペースを特殊文字としてエスケープする必要があります
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
scanf()で Hello World! のように半角空白を入れたのであれば、 今のコードではinput[]に Hello までしか入っていないはずです。printf()か何かで確認してみてください。 scanf()における書式文字列の見直しが必要でありそうです。
その他の回答 (3)
- notnot
- ベストアンサー率47% (4900/10358)
回答No.4
scanfの%sは、「次の空白文字まで読み込む」です。 行全体を読み込むのは、fgets関数を使って下さい。この場合は、末尾の改行文字まで入力されるので、それを取り除いてから比較することになります。 scanfの書式文字指定は難解なので、初心者はscanfを使わない方が良いです。
質問者
お礼
回答有難うございます。
質問者
補足
fgetsを使えばいいんですね。わかりました。
- wormhole
- ベストアンサー率28% (1626/5665)
回答No.3
>同じはずなのですが違いますと出力されます。。 strcmp("Hello World!", "Hello World!") で調べてみたらどうですか。
質問者
お礼
回答有難うございます。
質問者
補足
scanfによる読み込みがうまくいっていなかったのが原因でした。
- pringlez
- ベストアンサー率36% (598/1630)
回答No.1
コンピュータの世界では半角スペースも文字です。ただそれだけのことです。 >半角スペースがあると比較できない というのは違っています。 「Hello World!」と 「Hello World!」は同じ文字列だと判断されるはずですが。
質問者
お礼
回答有難うございます。
質問者
補足
同じはずなのですが違いますと出力されます。。 実行結果 ------------------- Hello World! >Hello World! 違います。 --------------------
お礼
回答有難うございます。
補足
printfでinputの内容を確認したところたしかにHelloまでしか入っていませんでした。 scanfについて調べてみたいと思います。