いつもお世話になっています。
あるプログラムを考えるにあたって、理由のわからない部分があったので教えてほしいです。
またもや文字入力に関してなのですが
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
おそらく入力バッファに改行コードが残ってるのが原因だと思います。
これは
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の部分では「文字」が対象になるので、改行コードがデータとして取り込まれています。