int a = 'f'
のようにint型に文字を代入することができるが、scanf でキーボードから入力する方法ありますか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
文字としてscanfで受け取って、それをint型の変数にキャストして代入すれば良いのでは?
c
1char c; 2scanf("%c", &c); 3int i = (int)c;
投稿2018/01/30 07:54
総合スコア3579
0
%c
でできます。
C++
1int c = 0; 2scanf("%c", &c); // 'a'を入力 3printf("c=%d\n", c); // '97(=0x61)'
VS2015
環境にて警告warning C4477: 'scanf' : 書式文字列 '%c' には、型 'char *' の引数が必要ですが、可変個引数 1 は型 'int *' です
が発生することが確認できました。環境(ビルド設定)によってはエラー扱いになっているかもしれません。
とりあえず回避するには面倒でも
C++
1char c = 0; 2scanf( "%c", &c); 3int a = c;
のようにいったんchar
型変数を利用すればすればよいです。
ただしVS2015
では引き続きwarning C4996
も出ますが、それは別の話ということで措きます。
投稿2018/01/30 06:56
編集2018/01/30 07:30総合スコア38234
0
ベストアンサー
C++じゃなくてC言語になりますけど、こういうことがしたいのでしょうか?
c
1#include <stdio.h> 2 3int main(void){ 4 int i; 5 scanf("%c",&i); 6 printf("%cが入力されました",i); 7}
実行例
plain
1a 2aが入力されました
上記コードは1文字分しか想定していません。またエラー処理等も全く考慮していません。あしからず。
投稿2018/01/30 06:58
総合スコア2043
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/30 07:01
2018/01/30 07:12
2018/01/30 07:29
0
int型に文字列は入りません。intは整数値を格納する型です。文字列を扱う場合はStringを使いましょう。入ったというかそれは文字コードが入ったにすぎません。
単一の文字ならcharに格納しましょう。ソースの可読性が悪くなります。
投稿2018/01/30 06:54
編集2018/01/30 06:59総合スコア1057
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。