非負の数字を入力してもらい表示させ、数字以外を入力した場合は終了するプログラムです↓(VC使用)
━━━━━━━━━━━━━━━━━━━━━━━━━━
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h> /* atoi使用 */
#include <ctype.h> /* isdigit使用 */
int main(void)
{
char cx;
int nx;
printf("非負の整数を入力してください。:");
scanf("%s", cx);
if(isdigit(cx) == 0){
printf("数字を入れてください。\n");
}else{
nx = atoi((const char*) cx);
}
printf("%d", nx);
return 0;
}
━━━━━━━━━━━━━━━━━━━━━━━━━━
実行し文字を入力するとDebug Error!と小窓がでます。どこがおかしいのでしょうか?
No.3
- 回答日時:
ひょっとすると、入力する文字は1文字だけという暗黙の前提ですか?
scanf() の第2パラメータ以降は変数へのポインタ。
cxのアドレスを与えるには?
ヘルプなどでscanf()の使用例を確認してみてください。
ご返答ありがとうございます。
入力する文字制限はなく、1文字でも数字以外が入ると「数字を入れてください」を表示するようにしています。scanfについてもう少し調べてみてみます。
No.1
- 回答日時:
ヒントだけ...
1.
char cx
と定義しているのに、scanf関数で文字列を代入しようとしているように見える。
2.
scanfで文字列を代入する場合、scanf関数に渡すべきは代入先のポインタである
3.
atoi関数の引数はchar型ではなくconst char*型。無理やりキャストを行っても動くわけがありません。
とりあえずcxを
char cx[128]
として、
sacanf("%s", cx)
とすれば動作するでしょう。
理由はよーく考えてください。
ご返答ありがとうございます。
返事が遅れて申し訳ありませんでした。cxをchar cx[128]と変更しても実行できず、「'isdigit' : 1 番目の引数を 'char [128]' から 'int' に変換できません。」とエラーがでてコンパイルできませんでした。そしてscanf("%s", cx);をsacanf("%s", cx);と変更しましたが、「'sacanf': 識別子が見つかりませんでした」とエラーがでました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
プログラミング初心者です。 Py...
-
java初心者です。入力されたの...
-
数字以外が入力されたらエラー...
-
if文の条件にscanf関数を使うと…?
-
C言語scanf_sで何故か2回入力に...
-
Linuxで入力待ちなしkeyread関...
-
実行結果の順番がおかしいんで...
-
Eclipseコンソール表示を、リセ...
-
VB カウントダウンタイマーの作...
-
正負を反転させて出力するプロ...
-
VB.NETで16進数+16進数や16進...
-
ワードで文字を入力する時の変...
-
2進数の1の数を数える問題
-
C言語でつるかめ算をするにはど...
-
Java 6人分の得点を入力し、平...
-
getchar()について 教えてくだ...
-
入力エラーの処理について。
-
enterでループ終了
-
scanf が無視されます
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
double型が正常に認識されてい...
-
プログラミング初心者です。 Py...
-
正負を反転させて出力するプロ...
-
Excel VBAで、Application.Inpu...
-
C言語について。
-
batプログラム上で文字列を入力...
-
*をユーザーが入力した数字の数...
-
cout関数を使っているのですが...
-
漢字のソートについて
-
数字以外が入力されたらエラー...
-
Userformの入力順序をタブオー...
-
ワードで文字を入力する時の変...
-
Linuxで入力待ちなしkeyread関...
-
java初心者です。入力されたの...
-
EDITコントロールで入力できる...
-
Eclipseコンソール表示を、リセ...
-
小数か整数かを判定する方法
-
C言語scanf_sで何故か2回入力に...
-
VB.NETで16進数+16進数や16進...
-
Linuxプログラミングで、キーボ...
おすすめ情報