C語言 - 【sacnf】讀取數據整形檢測模塊

需求:

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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章