我正在阅读一个包含以下功能的程序,
int ft_isalnum(int c)
{
return ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')
|| (c >= '0' && c <= '9'));
}
我不太了解此功能打算做什么?
答案 0 :(得分:3)
如其名称所暗示,该函数检查给定字符是否为字母数字。
假定AZ和az连续存储的ASCII字符编码,它将检查该字符是否在'A'到'Z'范围内,'a'到'z'范围内,或在'0'到' 9'范围,如果满足任何这些条件,则返回true。
答案 1 :(得分:2)
编写一个程序来找出答案:
SELECT CONCAT(c.course_id,': ',c.title) AS Course,
CONCAT(p.prereq_id,': ',pc.title) AS Prerequisite
FROM uni_course AS c
INNER JOIN uni_prereq AS p ON c.course_id = p.course_id
INNER JOIN uni_course AS pc ON p.prereq_id = pc.course_id;
输出
0 '?' 1 '?' 2 '?' 3 '?' 4 '?' 5 '?' 6 '?' 7 '?' 8 '?' 9 '?' 10 '?' 11 '?' 12 '?' 13 '?' 14 '?' 15 '?' 16 '?' 17 '?' 18 '?' 19 '?' 20 '?' 21 '?' 22 '?' 23 '?' 24 '?' 25 '?' 26 '?' 27 '?' 28 '?' 29 '?' 30 '?' 31 '?' 32 ' ' 33 '!' 34 '"' 35 '#' 36 '$' 37 '%' 38 '&' 39 ''' 40 '(' 41 ')' 42 '*' 43 '+' 44 ',' 45 '-' 46 '.' 47 '/' 48 '0' X 49 '1' X 50 '2' X 51 '3' X 52 '4' X 53 '5' X 54 '6' X 55 '7' X 56 '8' X 57 '9' X 58 ':' 59 ';' 60 '' 63 '?' 64 '@' 65 'A' X 66 'B' X 67 'C' X 68 'D' X 69 'E' X 70 'F' X 71 'G' X 72 'H' X 73 'I' X 74 'J' X 75 'K' X 76 'L' X 77 'M' X 78 'N' X 79 'O' X 80 'P' X 81 'Q' X 82 'R' X 83 'S' X 84 'T' X 85 'U' X 86 'V' X 87 'W' X 88 'X' X 89 'Y' X 90 'Z' X 91 '[' 92 '\' 93 ']' 94 '^' 95 '_' 96 '`' 97 'a' X 98 'b' X 99 'c' X 100 'd' X 101 'e' X 102 'f' X 103 'g' X 104 'h' X 105 'i' X 106 'j' X 107 'k' X 108 'l' X 109 'm' X 110 'n' X 111 'o' X 112 'p' X 113 'q' X 114 'r' X 115 's' X 116 't' X 117 'u' X 118 'v' X 119 'w' X 120 'x' X 121 'y' X 122 'z' X 123 '{' 124 '|' 125 '}' 126 '~' 127 '?'
在我的机器上,输出指示字符#include <stdio.h>
#include <ctype.h>
int ft_isalnum(int c)
{
return ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9'));
}
int main(void)
{
for (int i = 0; i < 128; putchar(++i % 8 ? ' ' : '\n'))
printf("%3d '%c' %c ", i, isprint((char unsigned)i) ? i : '?', ft_isalnum(i) ? 'X' : ' ');
putchar('\n');
}
至0
和字母9
至A
和Z
至a
{ {1}}是z
,而其他所有return
都是1
。
注意
并非所有字符都可以打印。
谢谢
致@Swordfish,使输出更具吸引力和可读性。