[英]Why is the isalpha declaration giving me an error code
我正在嘗試使用<ctype.h>
庫中的isalpha
function。 我在不同文件中使用了其他庫中的其他函數,但我無法讓isalpha
工作。 錯誤是:
test.c:9:21: error: expected ')'
int isalpha(int c);
^
我正在處理的代碼:
// Function Declarations
int isalpha(int c);
int main(void) {
char letter = get_char("Letter:");
bool yesno = isalpha(letter);
if (yesno == true) {
printf("True\n");
} else {
printf("False\n");
}
}
該庫包含在 header 中,我只是不知道如何在此處包含 header。
謝謝您的幫助
您應該只包含<ctype.h>
而不是在代碼中使用顯式原型重新定義isalpha
。 您收到錯誤的原因是isalpha()
可能被定義為<ctype.h>
中的宏,並且該宏在編譯器解析您的原型時被擴展,擴展的結果是語法錯誤。
另請注意,不應使用char
類型的參數調用isalpha()
,因為在默認情況下對char
進行簽名的平台上,它對於負值具有未定義的行為。 將char
arguments 轉換為(unsigned char)
以避免這種未定義的行為。
此外, isalpha
的返回值是一個int
,值0
表示 false,任何其他值表示 true。 比較isalpha(letter) == true
是不正確的。 您的代碼依賴於int
和bool
之間的 boolean 轉換,該轉換自 C99 起可用,但依賴此隱式轉換很容易出錯,因為這種微妙之處可能超出您的技能水平。
這是修改后的版本:
#include <ctype.h>
#include <stdio.h>
#include <cs50.h>
int main(void) {
char letter = get_char("Letter:");
if (isalpha((unsigned char)letter) {
printf("True\n");
} else {
printf("False\n");
}
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.