others - C - 如何使用getchar监听用户输入

我需要获取用户输入,并检查它是否有效输入,输入必须:

  • space (可能是多个)或数字开始,
  • (假设条件一个满足)数字之后,只要我提取了数字,就可以有字符,

对数字有效值的说明:

  • 可以是多个数字
  • 不能为负数
  • 不能包含小数点
  • 不能是科学记数法
  • 不能为十六进制

所以,我写了这个基本的代码,它只是获取输入,但是我不知道从哪里开始应用这些条件,


 printf("Enter size of input:n");


 int c;


 while((c=getchar())!='n' && c!=EOF){


 printf("%c",c);


 }



例如:

  • 输入- 4#@2311413sadokalda ;期望输出- 4

  • 输入- 4a ;期望输出- Invalid Size!

时间:

根据你所给出的问题,我认为这是你所期望的


int main(void)


{


 c=getchar(); //c is the first character of string


 if(isdigit(c)) //isdigit() function check if given variable is a digit


 { printf("%c",c); }


 else


 { printf("Invalid size"); }


}



你可以将状态机设置如下。


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 ("%dn",number);


 }


}



...