ユーザーが入力としてコマンドラインに整数または倍精度浮動小数点数を入力するCプログラムがあります。負の数は許可されますが、ユーザーが次のようなものを入力すると問題が発生します。
1-1
1つとして解析されるだけです。ユーザー入力が有効な数値であるかどうかをテストする関数を作成しましたが、そのようなインスタンスをキャッチする方法がわかりません。または、1 + 1、1)2などの入力についても同じことが言えます。
これが私が作成した関数です:
int check_number(char *userInput) {
int i;
//check each character
for (i = 0; userInput[i] != '\0'; i++){
if (isalpha(userInput[i])){
printf("Invalid input.\n");
return -1;
}
}
return 0;
}
ユーザー入力の途中で他のランダムな文字(文字はすでにisalphaでテストされているため、文字以外)を許可しないようにするにはどうすればよいですか?