如何簡單而正確地檢查用戶是否輸入數字而不是C語言中的字符或字符串?我試圖寫一些循環包含:C - 如何檢查輸入的數字
if (scanf("%d",&number)=1)
但他們從來沒有工作或結束。當輸入一個數字時循環應該結束。
如何簡單而正確地檢查用戶是否輸入數字而不是C語言中的字符或字符串?我試圖寫一些循環包含:C - 如何檢查輸入的數字
if (scanf("%d",&number)=1)
但他們從來沒有工作或結束。當輸入一個數字時循環應該結束。
我想你想要這樣的:
for (scanf(" %d", &number); (number < -100 || number > 100); scanf(" %d", &number)) {
printf("you didn't enter a valid number, try again >");
}
好吧,請記住'isdigit'帶有一個字符,並告訴你該字符是否是字符'0'到'9'中的一個字符。 –
是的,這有助於瞭解上下文。但是我們也不知道他不想要大於9或小於1的數字,所以測試'number> = 1 && number <= 9'可能不太好。你真的幾乎必須檢查'scanf'的返回值來做到這一點。 –
上下文並不重要。我只有幾個程序需要驗證,如果輸入的值是一個數字(不只是一個數字)。例如,數字可以從-100到100.如果用戶輸入一個字母或其他東西,那麼應該顯示一條消息,表示輸入的值不正確,用戶必須再次輸入該值。這應該繼續,直到輸入一個數字。 –
這是否適合您的上下文:
char ch;int g;
for(ch=getc(stdin);isalpha(ch);ch=getc(stdin))
{
printf("\nenter numbers only");
while(isalpha(getc(stdin))){}
}
ungetc(ch,stdin);
scanf("%d",&g);
printf("number entered %d",g);
你行應該僅僅是: if (scanf("%d",&number)){
如果輸入比其他一些東西,它將導致:if(0){
,而不是if(1){
我不認爲這樣的東西應該編譯。 – MByD
一些示例代碼將幫助 –
@user:提高編譯器的警告級別,**介意警告** – pmg