ft_isalnum函数的作用是什么?

时间:2018-11-08 21:17:22

标签: c++ c

我正在阅读一个包含以下功能的程序,

int ft_isalnum(int c)
{
    return ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')
            || (c >= '0' && c <= '9'));
}

我不太了解此功能打算做什么?

2 个答案:

答案 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和字母9AZa { {1}}是z,而其他所有return都是1

注意

并非所有字符都可以打印。

谢谢

致@Swordfish,使输出更具吸引力和可读性。