以下代碼失敗,因爲atoi()
需要char *
,我只通過char
。我想存儲只有第一位數字的值。任何想法我怎麼能做到這一點?使用atoi無法接受字符類型 - 任何方式?
int main() {
char a[]= "123";
int b = atoi(a[0]);
printf("%d",b);
}
這裏是確切的錯誤信息:
division.c:9:16: warning: incompatible integer to pointer conversion passing
'char' to parameter of type 'const char *'; take the address with &
[-Wint-conversion]
int b = atoi(a[0]);
^~~~
&
'的atoi()'旨在字符的空值終止字符串轉換;因此,它不適用於單個字符。如果編譯器允許你的調用,函數會將字符值解釋爲一個地址,這不會導致快樂。你已經看到了如何處理一個數字 - 可以說,你應該在應用'a [0] - '0'轉換之前檢查它是否是一個數字。當然,如果字符串是一個字符串,但atoi()不會返回0,但不能被識別爲數字;函數例如'strtol()'告訴你一個值是否被轉換,或者是太大,等等。 –