質問: ### 前提・実現したいこと 「char str[]="ABCDE";」と宣言としたあとに、例えばstr[2]に入ってる"C"のみをprintf関数など使って表示させたいです。 ### 試したこと printf("%s",str[2]);でいいと思っていましたが、エラーとなりました。 ポインタを思い出してprintf("%s",&str[2]);だ!!と思いましたが"CDE"を吐き出されパニック。 ### 追記 プログラミングを学び始めて1週間目です。 ### 解決しました👏 みなさんご回答ありがとうございました!! %cは教本に書いてあったと思うのですが完全にスルーしており盲点でした。 これからは%cとともにC言語道を歩もうと思います。 ご協力本当に感謝しております!!
回答: ``` printf("%c", str[2]); ``` でいいのですが、そもそも文字と文字列(Cでは厳密には文字列なんてものはありませんが)をきちんと区分しないとダメですよ。 なぜ ``` printf("%s",&str[2]); ``` が CDE と表示されるかといえば、printf で %s とは、「そのポインタの示す位置から、\0 を迎えるまでを連続して出力する」ものだからです。str[] は | 0 | 1 | 2 | 3 | 4 | 5 | | --- | --- | --- | --- | --- | --- | | A | B | C | D | E | \0 | という形で格納されているのですから、C の位置から出力を開始すれば CDE と出るのが道理です。