2014-11-08 77 views
0

我寫了一個C程序,其中我接受來自用戶的數字輸入。但是,如果用戶輸入一個字符,那麼我必須表明它是一個無效的輸入,並讓用戶再次輸入一個數字。我如何實現這一目標?我在Ubuntu中使用gcc編譯器編寫程序。 Google上的搜索結果建議使用isalpha函數...但是,它在我猜的庫中不可用。測試輸入是否爲數字

我也嘗試了下面......

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <ctype.h> 

void main() 
{ 
    system("clear"); 
    if (isdigit(1)) 
     printf("this is an alphabet\n"); 
    else 
     printf("this is not an alphabet\n"); 
} 
+0

發佈你的程序,告訴我們你已經嘗試過了。 – JAL 2014-11-08 03:17:47

+1

請注意'isdigit()'檢查數字,而不是字母字符。值「1」與「1」不同。後者是根據'isdigit()'的數字,但前者不是。值'1'相當於control-A,它是一個控制字符,而不是一個數字。請注意,在Unix系統上,'void main()'是無條件錯誤的。您可以在Windows上使用'void main()'作爲Microsoft擴展。 – 2014-11-08 03:19:52

+1

您應該查看'scanf'的不同格式說明符,如果您使用正確的數字,則假設您正在計劃使用'scanf',那麼檢查某個數字是否會非常簡單。 – IllusiveBrian 2014-11-08 03:20:10

回答

0

您將需要使用scanf來獲取用戶輸入與%d爲要掃描的整數。在你的情況下,scanf將在成功掃描時返回1。

int num; 
//loop to prompt use to enter valid input 
while(scanf("%d",&num)==0) //scanning an integer failed 
{ 
    printf("invalid input ! Try again\n"); 
    scanf("%*s"); //remove the invalid data from stdin 
} 

功能isalpha(),當你得到在scanf使用%c字符輸入isdigit()作品。如果您想使用%c來掃描輸入,那麼您可以簡單地檢查您的代碼,只要您使用%c即可獲得輸入。請注意,字符1('1')注意等於整數1。字符的整數值由the ASCII table表示。

char ch; 
    while(1){ 
     printf("Enter a number\n"); 
     scanf(" %c",&ch); 

     printf(Your input is %c\n",ch); 
     if(isdigit(ch)) 
     { 
      printf("This is a number\n"); 
      break; 
     } 
     else 
      printf("This is not a number. Invalid input\n"); 
    } 
-1

你可以寫你自己的。由於數字較少,所以最好檢查一下數字。

bool isDigit(char c) { 
    bool rtn = false; 
    switch(c) { 
     case '0': 
     case '1': 
     case '2': 
     case '3': 
     case '4': 
     case '5': 
     case '6': 
     case '7': 
     case '8': 
     case '9': 
      rtn = true; 
      break; 
     default: 
      rtn = false; 
      break; 
    } 
return rtn; 
} 
+3

爲什麼不'返回c> ='0'&& c <='9';' – IllusiveBrian 2014-11-08 03:26:08

+0

是的。這甚至更好。 – 2014-11-08 03:33:14

+0

感謝guys..will探索這些替代品和其他.. :) – Zack 2014-11-08 03:45:22

0

我嘗試下面的代碼工作fine..using ISDIGIT()

#include<stdio.h> 
#include<stdlib.h> 
#include<string.h> 
#include<ctype.h> 

void main() 
{ 
    system("clear"); 
    char str[1]; 

    printf("Enter a number\n"); 
    scanf("%s",str); 

    printf("What you entered was %s\n",str); 
    if(isdigit(str[0])) 
     printf("this is not an alphabet\n"); 
    else 
     printf("this is an alphabet\n"); 
} 
0
:當用戶進入其它,使用 %c一些看起來像這樣的東西,你的程序再提示用戶
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <stdbool.h> 
#include<ctype.h> 
int main() 
{ 
    char c; 
    printf("Enter a character: "); 
    scanf("%c",&c); 
    bool check=true; 

    while(check) 
    { 
    if((c>='a'&& c<='z') || (c>='A' && c<='Z')) 
     { 
      printf("%c is an alphabet.",c); 
      check=true; 
      break; 
     } 
    else 
    { 
     printf("%c is not an alphabet.",c); 
     check=false; 
    } 
    } 
    return 0; 
}