[解決済み】C言語で入力が整数型かどうかチェックする
2022-02-08 04:10:19
質問
アトイとかそういう関数が使えないのが難点です(確か数学演算に頼ればいいんですよね)。
int num;
scanf("%d",&num);
if(/* num is not integer */) {
printf("enter integer");
return;
}
試してみました。
(num*2)/2 == num
num%1==0
if(scanf("%d",&num)!=1)
が、どれもうまくいかなかった。
何か思い当たることはありますか?
解決方法は?
num
は常に整数を含む。
int
. その
リアル
をチェックしていないことが問題です。
scanf
の戻り値です。
scanf
は読み取りに成功した項目の数を返すので、この場合、有効な値の場合は1を返さなければなりません。そうでない場合は、無効な整数値が入力されたことになり
num
変数はおそらく変更されていない (つまり、初期化されていないため、任意の値が残っている) と思われます。
コメントでは、ユーザーが整数を入力した後にエンターキーを押すことだけを許可したいようですね。残念ながら、これは単純に
scanf("%d\n")
しかし、ここにそのためのトリックがあります。
int num;
char term;
if(scanf("%d%c", &num, &term) != 2 || term != '\n')
printf("failure\n");
else
printf("valid integer followed by enter key\n");
関連
-
[解決済み】警告。この関数ではXが初期化されていない状態で使用される可能性があります。
-
[解決済み】malloc():メモリ破壊
-
[解決済み】makefile:4。*** missing separator. 停止する
-
[解決済み] JavaScriptで文字列を整数に変換する方法は?
-
[解決済み] ngModel' は 'input' の既知のプロパティではないため、バインドできません。
-
[解決済み] Pythonで整数から文字列に変換する
-
[解決済み] HTML5でfloat入力タイプはありますか?
-
[解決済み] input type="date "のフォーマットを変更する方法はありますか?
-
[解決済み] Chromeのオートコンプリートで入力の背景色を削除する?
-
[解決済み] HTML Input="file" Accept Attribute File Type (CSV)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Valgrind - strcpyのサイズ1の無効な書き込み
-
[解決済み】C言語で「関数の型が競合しています」と表示される、なぜ?
-
[解決済み】デバッガgdbの使用時に不明な終了シグナルが発生する。
-
[解決済み】警告。この関数ではXが初期化されていない状態で使用される可能性があります。
-
[解決済み] struct has no member named
-
[解決済み】MB/sとMiB/sを計算する方法は?
-
[解決済み】C言語でint64_t型を表示する方法
-
[解決済み】スタックスマッシュを検出しました
-
[解決済み】未定義参照 makefile が間違っているのかも?
-
[解決済み】警告:式の結果が未使用の場合