2009-11-22 68 views

回答

8

您的代碼不工作,因爲你正在檢查的指針(內存地址)沒有的東西的價值的價值正指向。記住一個指針是一個地址,你必須取消引用它獲得該地址的值。

一旦廢棄時,你可以簡單地做一個char類型的比較,這些值:

char ascii_char = *ascii; 

if (ascii_char == 32 || ((ascii_char > 96) && (ascii_char < 123)) 
{ 

} 
+4

初學者指南:所述指針是你的手指,char是月亮,不要混淆這兩個;-) – 2009-11-22 03:09:38

3

只要把*變量名前

if (*ascii == 32 || ((*ascii > 96) && (*ascii < 123)) { 

} 

或者只是把它分配給另一個變量並用它代替

int a = *ascii 
if (a == 32 || ((a > 96) && (a < 123)) { 

} 
+0

謝謝你發佈一個答案:) – c2009l123 2009-11-22 04:42:52

0

我相信這會做詭計

int asciiNum = (int)*ascii; 
0

如果不是指比較只是第一個字符,而是存儲在ascii指針中的數字,則使用atoi()函數將char數組轉換爲數字,然後進行比較。

+0

不是atoi非標準! – 2009-11-22 02:16:23

+0

不,它是標準C庫libc的一部分 – 2009-11-22 02:23:09

+0

它是非標準的itoa。 SGI STL中的std :: iota也不在標準的C++中。這兩個很容易被打亂。 – 2009-11-22 03:12:15

1

爲什麼你要爲ASCII值?

將以下更可讀的方式:

炭ascii_char = * ASCII;

如果(ascii_char == '' ||((ascii_char> = 'A')& &(ascii_char < = 'Z'))

{

}

相關問題