程式人人會寫,各有巧妙不同,也因為是這樣,所以常常會有讓人意想不到的發展...
第一次看到下面的程式碼,整個人僵化了...
下列的程式碼用來判斷一個字元是否可視、可列印
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 發表在 痞客邦 留言(0) 人氣()

會發生 ERROR C2440: 'initializing' : cannot convert from 'char *' to 'ATL::CStringT' 的問題,是因為專案中的字元集設定為 UNICODE ,在編譯時,Preprocessor 在處理字串時,會自動用寬字元相關函式來處理,當窄寬互相混合處理時就會發生此錯誤。
解決方法:
專案 | 專案屬性 | 組態屬性 | 一般 | 字元集 此改選用 使用多位元組字元集

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

1. 下載最新的 Microsoft SDK
2.  include 'Ws2tcpip.h'

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

C/C++ 常讓人困擾的問題,header file先後順序,有時會讓人抓狂.....
要解決 error C2011: 'sockaddr' : 'struct' type redefinition 這問題,記得
the solution which always works is to include winsock2.h before windows.h

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

錯誤:
ERROR LNK2019: 無法解析的外部符號 __imp__XXX@16 ,該符號在函數 "void __cdecl MyTest(unsigned int)" (?MySend@@YAXI@Z) 中被引用
解決方法:
專案 | 專案屬性 | 組態屬性 | 連結器 | 輸入 | 其他相依性 此輸入使用到的 Libray

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

錯誤:
ERROR C1083: msado15.dll No such file or directory 問題
解決方法:
1. 找到電腦中 msado15.dll 存放位置,例 Windows 7, which is located at C:\Program Files\Common Files\System\ado
2. 工具 | 選項 | 專案與方案 | VC++ 目錄 加入上列目錄

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

錯誤:
ERROR C2812: 不支援將 #import 配合 /clr:pure 或 /clr:safe 使用
解決方法:
專案 | 專案屬性 | 一般 | Common Language Runtime 支援 改選擇 Common Language Runtime 支援(/clr)

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

錯誤:
ERROR D8016: '/MTd' 和 '/clr:pure' 的命令列選項不相容
解決方式:
專案 | 專案屬性 | C/C++ | 程式碼產生 | 執行階段程式碼 改選擇 "多執行緒偵錯 DLL (/MDd)"

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

1
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。