---------------------------------------
#include<stdio.h>
int main(void)
{
int dt;
while(scanf("%d",&dt)==1){
if(dt==0){
printf("0は入力しないでください\n");
puts("");
}
else if(dt<0){
dt=-dt;
printf("入力値の絶対値は「%d」です\n",dt);
puts("");
}
else{
printf("入力値の絶対値は「%d」です\n",dt);
puts("");
}
}
return 0;
}
---------------------------------------
以上のプログラムについて疑問があります。
scanf関数の戻り値が1の間、繰り返すというもので、入力の時に整数入力ですが、あえて実数である1.1を入れたとします。
scanfの戻り値は1で、dtには整数部の1だけ設定されていたので、これでもうまくいくのかと思ったのですが、次の入力はscanfの戻り値が0になっていて出来ませんでした。
何故0になっているのかわかりません。
入力バッファに何か残ってしまっているということなのでしょうか?
以上教えていただけると嬉しいです。
No.2
- 回答日時:
scanf()関数仕様の確認は別途必要として。
実行環境がある場合は質問者さんのソースの最後にある「return 0;」直前に次のソース追加してみて下さい。1つの確認方法です。/* ここから */
{
char test[256];
int i;
printf("\n 追加 scanf()コール開始 \n");
for (i=0;i<256;i++) {
scanf("%c", &test[i]);
if ('\n'==test[i]) {
printf("No.%d 0x%02X : '\\n'\n", i, test[i]);
} else {
printf("No.%d 0x%02X : '%c'\n", i, test[i], test[i]);
}
if ('\n' == test[i]) break;
}
scanf("%s", test);/*終了待ちのダミー入力用*/
}
/* ここまで */
ご回答ありがとうございます。
アドバイスのプログラムを追加してみたところ、入力バッファに残っている文字が、可視化出来るようになりました!
C言語初心者なもので、プログラムを理解するのに時間がかかりそうですが、ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正負を反転させて出力するプロ...
-
*をユーザーが入力した数字の数...
-
数字以外が入力されたらエラー...
-
java初心者です。入力されたの...
-
if文の条件にscanf関数を使うと…?
-
C言語scanf_sで何故か2回入力に...
-
java 入力された文字列を数値に...
-
"scanf"でエンターで改行させな...
-
enterでループ終了
-
C言語
-
C言語でgetchar();が上手く使え...
-
プログラミング初心者です。 Py...
-
getchar()について 教えてくだ...
-
C言語 逆ピラミッドの作り方
-
fflush(stdin)の使い方とprintf...
-
cout関数を使っているのですが...
-
電卓の小数点
-
scanfが2回使えない・・・?;
-
Userformの入力順序をタブオー...
-
プログラミングの問題で、キー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
正負を反転させて出力するプロ...
-
数字以外が入力されたらエラー...
-
プログラミング初心者です。 Py...
-
double型が正常に認識されてい...
-
java初心者です。入力されたの...
-
Eclipseコンソール表示を、リセ...
-
scanfが2回使えない・・・?;
-
C言語scanf_sで何故か2回入力に...
-
if文の条件にscanf関数を使うと…?
-
Linuxで入力待ちなしkeyread関...
-
プログラミングの問題です 「金...
-
ワードで文字を入力する時の変...
-
cout関数を使っているのですが...
-
batプログラム上で文字列を入力...
-
Userformの入力順序をタブオー...
-
scanf が無視されます
-
C言語 逆ピラミッドの作り方
-
gets_sがうまく動かない
-
Excel VBAで、Application.Inpu...
おすすめ情報