[英]Issues with do/while loop ask question too many times
我的代碼有問題:
當我寫任何不同於 1,2,3,4 的輸入時,output 是
Inserire il numero dei giocatori
inserire un numero valido
Inserire il numero dei giocatori
inserire un numero valido
Inserire il numero dei giocatori
我該如何解決?
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <time.h>
int controll_num(){
int controll=0;
int players;
char c;
do{
printf("Inserire il numero dei giocatori \n");
c=getc(stdin);
switch (c){
case 49:
players=1;
controll=1;
break;
case 50:
players=2;
controll=1;
break;
case 51:
players = 3;
controll=1;
break;
case 52:
players = 4;
controll=1;
break;
default:
printf("inserire un numero valido\n");
}
}while(controll==0);
return players;
}
int main(){
controll_num();
return 0;
}
例如使用scanf
而不是getc
scanf( " %c", &c );
注意格式字符串中的前導空格。 它允許跳過空白字符,例如通過按 Enter 鍵放置在輸入緩沖區中的換行符'\n'
。
至於getc
那么它可以讀取空白字符。
也不要使用像49
這樣的幻數作為案例標簽
case 49:
使用像這樣的字符
case '1':
這將使您的代碼更具可讀性。
您需要檢查該值是否為數字並且根本不需要您的開關盒。
int controll_num(void){
int players;
char c;
while(1)
{
printf("Inserire il numero dei giocatori \n");
c=getc(stdin);
if(isdigit((unsigned char)c))
{
players = c - '0';
break;
}
printf("inserire un numero valido\n");
};
return players;
}
int main(void)
{
printf("Number of players %d\n", controll_num());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.