日記

日本語の勉強のためのブログ

【C言語】「ポインタと整数の比較を行なっています」

今日出たエラーについてメモ。

 

出たエラー

ポインタと整数の比較を行なっています[デフォルトで有効]

if (letter == "c") count++;

              ^

文字列リテラルの比較結果は不定です[-Waddress]

(注:letterはchar型変数)

 

解決

文字をくくるのはシングルクォーテーションという決まりがある。

programming.pc-note.net

C言語では、文字と文字列は別物として扱われています。
文字は半角英数字ひとつ、文字列は文字が複数集まったものです。
(半角の記号ひとつも文字です)
日本語などの全角文字は、一文字だけでも文字列として扱われます。
そして、文字はシングルクォーテーション、文字列はダブルクォーテーションで括る、というのがルールです。

半角英数文字ひとつだけでも、それをダブルクォーテーションで括ると文字ではなく文字列として扱われます。
反対に、文字列をシングルクォーテーションで括るとそれはエラーとなります。

 

つまり

if (letter == "c") count++;

ではなく

if (letter == 'c') count++;

とすれば動作する。

 

補足

ファイルから1文字だけ読み取りたいときにはfgetcが使える。