質問: scanfを使って文字を表示させたいのですが、”0”や”@”が表示されてしまいます。参考書に沿って入力しています。scanfは実際のプログラミングではほとんど使わないとは聞いているのですがちゃんと表示されな理由が知りたいです。 ``` #include int main() { int a; scanf("%d", &a); printf("%d\n", a); return 0; } ```
回答: こんにちは。 scanf()は、文字列を書式指定に従って変換して変数へ放り込む関数です。 %dは、'0'~'9'と' 'で構成された文字列を10進数の数値とみなしてint型の数値へ変換し、int型変数へ放り込む指示です。従って、10進数で使用する以外の文字を解釈しません。 もし、1文字だけ読み取りたいのでしたら、MichelJohnさんの仰る通りの方法で可能です。 もし、文字列(複数の文字)を読み取りたいのでしたら、この解説が丁寧でわかりやすいと思います。