程式人人會寫,各有巧妙不同,也因為是這樣,所以常常會有讓人意想不到的發展...

第一次看到下面的程式碼,整個人僵化了...
下列的程式碼用來判斷一個字元是否可視、可列印
int is_visual_char(unsigned char ch)
{
switch(ch)
{
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
case 'G':
case 'H':
case 'I':
case 'J':
case 'K':
case 'L':
case 'M':
case 'N':
case 'O':
case 'P':
case 'Q':
case 'R':
case 'S':
case 'T':
case 'U':
case 'V':
case 'W':
case 'X':
case 'Y':
case 'Z':
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
case 'g':
case 'h':
case 'i':
case 'j':
case 'k':
case 'l':
case 'm':
case 'n':
case 'o':
case 'p':
case 'q':
case 'r':
case 's':
case 't':
case 'u':
case 'v':
case 'w':
case 'x':
case 'y':
case 'z':
case '~':
case '!':
case '@':
case '#':
case '$':
case '%':
case '^':
case '&':
case '*':
case '(':
case ')':
case '_':
case '+':
case '`':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case '0':
case '-':
case '=':
case '{':
case '}':
case '[':
case ']':
case ':':
case '"':
case '|':
case ';':
case '\'':
case '\\':
case '<':
case ',':
case '>':
case '.':
case '?':
case '/':
{
return 1;
}
default:
break;
}
return 0;
}


再看到下列有人回覆ASCII裏1-31為控制字元,32是空格,33以上都是可視的,只需要判斷其ASCII大於32就行了。
int is_visual_char(unsigned char ch)
{
return ch > 32;
}


心理面直吶喊那127(DEL控制字元)是鬼嗎?
說真的,現在網路那麼方便,不是都 Google to coding,多小心驗證,應該可以得到對的答案。
附上維基百科 ASCII 說明網址( 前往 )
而且這簡單的功能,C/C++早就提供了函式可以用,根本無需重新製作新輪子。

原型:extern int isprint(char c);
用法:#include <ctype.h>
功能:判斷字元c是否為可列印字元(0x20-0x7e,含空格)
說明:當c為可列印字元時,返回非零值,否則返回零。

....Orz....

mark528 發表在 痞客邦 PIXNET 留言(0) 人氣()