我正在尝试在C中创建一个宏,它可以判断char是否为十六进制数(0-9 az AZ)
#define _hex(x) (((x) >= "0" && (x) <= "9" )||( (x) >= "a" && (x) <= "z") || ((x) >= "A" && (x) <= "Z") ? "true" : "false")
Run Code Online (Sandbox Code Playgroud)
这是我提出的,但它不适用于这样的循环
char a;
for(a = "a" ; a < "z";a++){
printf("%s => %s",a, _hex(a));
}
Run Code Online (Sandbox Code Playgroud)
它给出了一个错误
test.c:8: warning: assignment makes integer from pointer without a cast
test.c:8: warning: comparison between pointer and integer
test.c:9: warning: comparison between pointer and integer
test.c:9: warning: comparison between pointer and integer
test.c:9: warning: comparison between pointer and integer
test.c:9: warning: comparison between pointer and integer
test.c:9: warning: comparison between pointer and integer
test.c:9: warning: comparison between pointer and integer
Run Code Online (Sandbox Code Playgroud)
"a"是指向字符串"a"的指针.您想要将char与'a'进行比较.
#define _hex(x) (((x) >= '0' && (x) <= '9' )||( (x) >= 'a' && (x) <= 'z') || ((x) >= 'A' && (x) <= 'Z') ? "true" : "false")
Run Code Online (Sandbox Code Playgroud)
但您也可以使用isalnum(x)- 如果字符是数字或字符,则返回true.
或者,isxdigit(x)如果真的应该是十六进制检查.
| 归档时间: |
|
| 查看次数: |
631 次 |
| 最近记录: |