我在寫項目的時候經常遇到要重復程序的項目,若此時輸入字母(本應輸入數字)就會報錯,困擾我很久,因此想了一下解決辦法,希望能幫到大家,也希望有大神指出我的錯誤并在評論區留下您的觀點,很感謝您的閱讀!
由于我主要用switch case語句,所以以下的解決辦法皆與其相關,其他的輸入場景也與其相似!
不超過9種情況時,可以直接case’數字’,注意使用單引號?。。。?/p>
int main()
{chindex++;
}
//index=1時進入,應為只有一位數字,case0-9的情況
if (index=1)
{char a = input[0];
switch (a)
{case '1':
printf("成功!\n");
break;
case '2':
printf("再次成功!\n");
break;
default:
printf("輸入錯誤,請重新輸入!\n");
break;
}
}
//注意有兩種輸入錯誤的情況,均要進行說明
else
{printf("輸入錯誤,請重新輸入!\n");
}
return 0;
}
2.case情況>=10思路:使用函數和strcmp來判斷,因為不能直接比較字符串是否相等
//自定義函數部分,注意數字要用雙引號!?。。。。。。?!
int Judge(char input[])
{if (strcmp(input, "1") == 0)
{return 1;
}
else if (strcmp(input,"12")==0)
{return 12;
}
else if (strcmp(input, "11") == 0)
{return 11;
}
else if (strcmp(input, "0") == 0)
{return 0;
}
//這個值是隨機賦的,目的是讓主函數中的大while循環一直進行下去。
else
{return 100l;
}
}
int main()
{int judge = 0;
do
{int index = 0;
char ch;
char input[100];
while ((ch = getchar()) != '\n')
{ input[index] = ch;
index++;
}
//使用strcmp函數要小心,因為他遇不到\0會一直讀下去,導致讀到沒用的內容
input[index] = '\0';
//這個根據自己的情況進行設置
if (index<= 2)
{//調用函數
judge = Judge(input);
switch (judge)
{ case 1:
printf("1\n");
break;
case 11:
printf("11\n");
break;
case 12:
printf("12\n");
break;
default:
printf("輸入錯誤!請重新輸入\n");
break;
}
}
else
{ printf("輸入錯誤!請重新輸入\n");
//賦一個1給judge,確保即使輸錯了也能讓while循環一直進行下去。
judge = 1;
}
} while (judge);
}
總結
檢驗合法性輸入有不同的方法,在不同的場景下還要注意輸入緩沖區中\n的問題,但主要還是依靠while循環來實現,因此還望各位讀者多多思考,謝謝!
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
新聞名稱:C語言檢驗用戶的合法性輸入(switch語句)-創新互聯
當前URL:http://vcdvsql.cn/article16/phsgg.html
成都網站建設公司_創新互聯,為您提供網站收錄、網站改版、用戶體驗、網站營銷、品牌網站設計、關鍵詞優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯