[英]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.