📄 getanum.c
字号:
#include <stdio.h>
/***********************************
函数功能:检验一个字符是不是数字
参数: 一个字符
返回值: 若是数字,返回1
若不是数字,返回0
***********************************/
int detect_number(char ch)
{
if(ch>=48&&ch<=57)
return 1;
else
return 0;
}
/**********************************
函数功能:将一个字符数组转换成其对应的数字
参数: char型,数组
返回值: 转换后的数字
**********************************/
int array2Digit(char InStr[])
{
int i=0,j=0,now=0;
int length=0;
int result=0;
for(length=0;InStr[length]!='\0';length++); /*计算InStr[]的长度*/
if(length==0)
{
printf("The array is empty!\n\r");
return(0);
}
for(i=0;i<length;i++) /*将InStr[]转换成数字*/
{
now=InStr[i]-48;
for(j=0;j<length-i-1;j++)
now*=10; /*后面加上几个0,把该数字放到正确位上*/
result+=now; /*加给number*/
}
return(result);
}
/*****************************************
函数功能:获得一个合法的数字
细节: 对每次按键进行时时监控,禁止非法字符的输入
参数: void
返回值: 得到得那个合法的两位数字(int型)
*****************************************/
int getANumber(void)
{
int result=-1; /*返回值result*/
int i=0; /*计数项*/
char now='\n'; /*当前吸收的字符*/
char res[51]; /*返回值ruselt的数组形式*/
int length=0; /*res[]的长度*/
for(i=0;i<51;i++)
res[i]='\0';
now = getche();
if(now==13 && length==0)
{
result = getANumber();
return(result);
}
for(;now!=13;)
{
if(now=='$')return(-1);
if(detect_number(now)==0)
{
printf("\b \b");
now = getche();
continue;
}
else
{
res[length++]=now;
now = getche();
}
}/*end for*/
printf("\n\r");
result = array2Digit(res);
return(result);
}
/***************************
检验子函数是否正常执行功能
***************************/
main()
{
int n=-1;
printf("Input the number required: ");
n = getANumber();
printf("%d",n);
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -