簡體   English   中英

C中字母和整數的區別

[英]Distinguish between a letter and integer in C

請注意,我不是要像 ctype.h 中的 isalpha() 等函數那樣區分單個數字和字母(或其他字符)

我試圖區分整數和字母表。

問題是字母表在 C 中也被視為整數,我想不出出路。

例如:如果輸入是字母a,則它與'a'相同,即整數97。

我需要找出輸入的是 'a' 還是 97。

我試圖這樣做並意識到它根本無法工作。

int a;
scanf("%d", &a);
if( (a>='A' && a<='Z') || (a>='a' && a<='z') )
{
   printf("\nAlphabet");
}

檢查scanf()的返回值

int val;
int chk = sscanf("a", "%d", &val);
if (chk == 1) /* all ok */;
if (chk == 0) /* no assignments */;
if (chk == EOF) /* error */;

或者

int val;
int chk = sscanf("97", "%d", &val);
if (chk == 1) /* all ok */;
if (chk == 0) /* no assignments */;
if (chk == EOF) /* error */;

或者

int val1, val2, val3;
int chk = sscanf("97 b 99", "%d%d%d", &val1, &val2, &val3);
if (chk == 3) /* all ok */;
if (chk == 2) /* only val1 and val2 were assigned a value */;
if (chk == 1) /* only val1 was assigned a value */;
if (chk == 0) /* no assignments */;
if (chk == EOF) /* error */;

scanf之后你不必再區分它,因為它已經區分了它:

  • %d只輸入整數,所以你可以輸入整數 => 如果你寫 9,你將把 9 存儲在變量中。 不能用這個( demo )讀取字符。 此外,如果您輸入 97,它將在變量中存儲 97,該變量也對應於與關聯的代碼
  • %c只輸入字符 => 如果你寫 9,你會存儲字符 9 的關聯代碼,57

您可以檢查scanf返回以了解它是否成功讀取某些內容。

因此,如果用戶可以輸入字符和字母,則可能的解決方案是僅獲取帶有%c字符並在用戶鍵入期間重新創建整數:

int i = 0;
int dec = 1;
char c;
scanf("%c", &c);
if (c >= '0' && c <= '9')
{
    i += c*dec;
    dec *= 10;
}
else
{
    // manage letter
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM