C語(yǔ)言檢驗(yàn)用戶的合法性輸入(switch語(yǔ)句)-創(chuàng)新互聯(lián)

前情提要

我在寫(xiě)項(xiàng)目的時(shí)候經(jīng)常遇到要重復(fù)程序的項(xiàng)目,若此時(shí)輸入字母(本應(yīng)輸入數(shù)字)就會(huì)報(bào)錯(cuò),困擾我很久,因此想了一下解決辦法,希望能幫到大家,也希望有大神指出我的錯(cuò)誤并在評(píng)論區(qū)留下您的觀點(diǎn),很感謝您的閱讀!
由于我主要用switch case語(yǔ)句,所以以下的解決辦法皆與其相關(guān),其他的輸入場(chǎng)景也與其相似!

創(chuàng)新互聯(lián)主營(yíng)南丹網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app軟件開(kāi)發(fā),南丹h5重慶小程序開(kāi)發(fā)公司搭建,南丹網(wǎng)站營(yíng)銷推廣歡迎南丹等地區(qū)企業(yè)咨詢1.case情況不超過(guò)9時(shí)

不超過(guò)9種情況時(shí),可以直接case’數(shù)字’,注意使用單引號(hào)?。。?!

int main()
{chindex++;
	}
	//index=1時(shí)進(jìn)入,應(yīng)為只有一位數(shù)字,case0-9的情況
	if (index=1)
	{char a = input[0];
		switch (a)
		{case '1':
			printf("成功!\n");
			break;
		case '2':
			printf("再次成功!\n");
			break;
		default:
			printf("輸入錯(cuò)誤,請(qǐng)重新輸入!\n");
			break;
		}
	}
	//注意有兩種輸入錯(cuò)誤的情況,均要進(jìn)行說(shuō)明
	else
	{printf("輸入錯(cuò)誤,請(qǐng)重新輸入!\n");
	}

	return 0;
}
2.case情況>=10

思路:使用函數(shù)和strcmp來(lái)判斷,因?yàn)椴荒苤苯颖容^字符串是否相等

//自定義函數(shù)部分,注意數(shù)字要用雙引號(hào)!?。。。。。。。?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;
	}
	//這個(gè)值是隨機(jī)賦的,目的是讓主函數(shù)中的大while循環(huán)一直進(jìn)行下去。
	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函數(shù)要小心,因?yàn)樗霾坏絓0會(huì)一直讀下去,導(dǎo)致讀到?jīng)]用的內(nèi)容
		input[index] = '\0';
		//這個(gè)根據(jù)自己的情況進(jìn)行設(shè)置
		if (index<= 2)
		{//調(diào)用函數(shù)
			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("輸入錯(cuò)誤!請(qǐng)重新輸入\n");
				break;
			}
		}
		else
		{	printf("輸入錯(cuò)誤!請(qǐng)重新輸入\n");
			//賦一個(gè)1給judge,確保即使輸錯(cuò)了也能讓while循環(huán)一直進(jìn)行下去。
			judge = 1;
		}
	} while (judge);
}
總結(jié) 檢驗(yàn)合法性輸入有不同的方法,在不同的場(chǎng)景下還要注意輸入緩沖區(qū)中\(zhòng)n的問(wèn)題,但主要還是依靠while循環(huán)來(lái)實(shí)現(xiàn),因此還望各位讀者多多思考,謝謝!

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

新聞名稱:C語(yǔ)言檢驗(yàn)用戶的合法性輸入(switch語(yǔ)句)-創(chuàng)新互聯(lián)
當(dāng)前URL:http://muchs.cn/article16/phsgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、網(wǎng)站改版、用戶體驗(yàn)、網(wǎng)站營(yíng)銷、品牌網(wǎng)站設(shè)計(jì)、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名