我有一個指針(* ascii),它是一個指向char的指針,我希望它是一個int值,以使它成爲一個if像如何將一個指針指向一個int在c中(以獲得它的ascii值)
if (ascii == 32 || ((ascii > 96) && (ascii < 123)) {
}
這是行不通的聲明,我將不勝感激幫助
我有一個指針(* ascii),它是一個指向char的指針,我希望它是一個int值,以使它成爲一個if像如何將一個指針指向一個int在c中(以獲得它的ascii值)
if (ascii == 32 || ((ascii > 96) && (ascii < 123)) {
}
這是行不通的聲明,我將不勝感激幫助
您的代碼不工作,因爲你正在檢查的指針(內存地址)沒有的東西的價值的價值正指向。記住一個指針是一個地址,你必須取消引用它獲得該地址的值。
一旦廢棄時,你可以簡單地做一個char類型的比較,這些值:
char ascii_char = *ascii;
if (ascii_char == 32 || ((ascii_char > 96) && (ascii_char < 123))
{
}
只要把*變量名前
if (*ascii == 32 || ((*ascii > 96) && (*ascii < 123)) {
}
或者只是把它分配給另一個變量並用它代替
int a = *ascii
if (a == 32 || ((a > 96) && (a < 123)) {
}
謝謝你發佈一個答案:) – c2009l123 2009-11-22 04:42:52
我相信這會做詭計
int asciiNum = (int)*ascii;
如果不是指比較只是第一個字符,而是存儲在ascii指針中的數字,則使用atoi()函數將char數組轉換爲數字,然後進行比較。
不是atoi非標準! – 2009-11-22 02:16:23
不,它是標準C庫libc的一部分 – 2009-11-22 02:23:09
它是非標準的itoa。 SGI STL中的std :: iota也不在標準的C++中。這兩個很容易被打亂。 – 2009-11-22 03:12:15
爲什麼你要爲ASCII值?
將以下更可讀的方式:
炭ascii_char = * ASCII;
如果(ascii_char == '' ||((ascii_char> = 'A')& &(ascii_char < = 'Z'))
{
}
初學者指南:所述指針是你的手指,char是月亮,不要混淆這兩個;-) – 2009-11-22 03:09:38