我需要获取用户输入并检查它是否有效。 输入必须:
- 以
空格
(可以是多个)或数字开头。 - (假设满足条件一)数字后面可能有任何类型的字符,只要我设法提取数字
数字有效值说明:
- 可以是多位数
- 不能为负数
- 不能包含小数点
- 不能是科学记数法
- 不能是十六进制
所以我写了这个简单的获取输入的基本代码,但我不知道从哪里开始应用这些条件
printf("Enter size of input:\n");
int c;
while((c=getchar())!='\n' && c!=EOF){
printf("%c",c);
}
例如:
输入 -
4#@2311413sadokalda
;预期输出 -4
输入 -
!4a
;预期输出 -无效大小
最佳答案
你可以有如下状态机。
printf("Enter size of input:\n");
int c;
int state = 0; //0 = space, 1 = number, 2 = number read
int number = 0;
while((c=getchar())!='\n' && c!=EOF){
switch(state)
{
case 0:
if (isdigit(c))
state = 1;
else if (c == ' ')
break;
else
//error
break;
case 1:
if (isdigit(c))
{
number = number*10 + (c-'0');
break;
}
else {
state = 2;
}
case 2:
printf ("%d\n",number);
}
}
关于c - 如何使用 getchar 监视用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58690594/