需求:
從控制檯讀取一個整形年份數據,範圍 [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;
}
}
}
}