需求:
从控制台读取一个整形年份数据,范围 [1, 3000],函数返回输入数据,输入格式有误时提醒重新输入;
☞ 输入数据:aaaa (报错)
☞ 输入数据:aaaaa (报错)
☞ 输入数据:11aa (报错)
☞ 输入数据:12345(报错)
☞ 输入数据:2020(通过)
int inputYear(){
int year = 0;
char data[5] = {'\0'};
int flag = 0;
while(1){
printf("Please input year:");
scanf("%s",data);
//刷新输入缓冲区
fflush(stdin);
//判断个数4位
if(data[4]!='\0'){
printf("格式错误!\n");
continue;
}
for(int i=0;i<4;i++){
if(data[i]<='9'&&data[i]>='0'){
flag = 1;
}else{
flag = 0;
printf("格式错误!\n");
break;
}
}
//结果在[0,9999] 之间
if(flag){
//转换为int值
for(int i=0;i<4;i++){
int temp = (int)data[i]-48;
for(int j=0;j<4-1-i;j++){
temp*=10;
}
year += temp;
}
if(year<1||year>3000){
printf("格式错误!\n");
}else{
return year;
}
}
}
}