人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

C言語についての質問です。

いつもお世話になっています。

あるプログラムを考えるにあたって、理由のわからない部分があったので教えてほしいです。
またもや文字入力に関してなのですが
char mh;
scanf_s("%c", &mh);
printf(">>%c", mh);
この部分のscanf_s("%c", &mh);がなぜか読み飛ばされてしまします。
前回のような後ろに入力文字数を指定する方法など試してみましたが違いました。

ちなみに僕がしたいのは、一文字読み取ってその文字によって作業を分岐する内容です。
全体像は画像で添付します。

そもそも内容として正しくない可能性もありますが、今のところわからないのは
scanfが読み飛ばされる理由のみです…

何かわかる方いらっしゃればご教授よろしくお願いします。

参考ページ(作ろうとしている内容が載ってます)
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2000

1406711318
●拡大する

●質問者: こばしゅん
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● siachan

おそらく入力バッファに改行コードが残ってるのが原因だと思います。

これは

printf(">>%c",mh);

printf(">>%02X",mh);

にしてみると確認できます。

なので

scanf_s("%d\n",&m);

putchar('\n');
for(int i = 0; i < m; i++) {
scanf_s("%c %d\n",&mh,1,&mk);
printf(">>%c",mh);
flag = tansa(p, x, y, mh, mk);

こうしてみてはどうでしょう。

ここ以外では「数値」を入力データの対象にしているので改行コードは無視されていますが、mhの部分では「文字」が対象になるので、改行コードがデータとして取り込まれています。


こばしゅんさんのコメント
なるほど…、確かにうまくいきました!あるがとうございます! 勉強不足のせいで、なぜそうなるのか理解が難しいですがそこは自分で調べてみます><
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ