2015-08-14 74 views
1

下面是代碼:如何使用atoi()將char數組的元素轉換爲int?

char *P_char = malloc(sizeof(char)*10); 

int i = 0; 

for(i; i < 10; i++) 
{ 
    P_char[i] = (char)(i + 48); 
} 

這裏有一些我爲了使用的atoi

printf("The int result is: %d", atoi(P_char[4])); 

int converted = atoi(P_char[4]); 
printf("The int result is: %d", converted); 

const char x = P_char[4]; 
int converted = atoi(x); 
printf("The int result is: %d", converted); 
已經嘗試的代碼

但仍然無法正常工作。我找不到atoi()是否不適用於指針。有這樣的事實嗎?

NOTE:當我說不起作用,我的意思是程序退出錯誤代碼,而不是執行到最後。

+2

你想轉換'char'爲整數,但你需要通過'字符*' –

+1

放'&P_char [4]如您所願'但可能無法正常工作。它似乎你嘗試將一個'char'轉換爲int。 – HuStmpHrrr

+1

你讀過atoi的manpage嗎? atoi將字符串轉換爲整數,而不是將char轉換爲整數。 char轉換爲整數只需要轉換... –

回答

2

如果你有這樣的語句

const char x = P_char[4]; 

然後輸出存儲在X中的數字,你可以通過以下方式

printf("The int result is: %d", x - '0'); 

至於功能上atoi然後將其應用到字符串整數而不是一個字符。

+0

那麼,atoi()的參數應該是null結束?總是? – ozgur

+0

@ozgur是的,你是對的。雖然它可以應用於也有字母字符的字符串。例如應用於「10abc」; atoi將返回10. –

+0

最後一個問題。我從控制檯應用程序獲取char數組。我需要從中得到整數。所以我手裏沒有像「xyz213」這樣的字符串。我有一個char數組。在這種情況下是否可以使用atoi()? – ozgur

0

函數atoi用於將C字符串轉換爲數字。它被聲明爲:

int atoi(const char *nptr); 

你給一個char值作爲參數。您必須使用這樣的事情,而不是:

const char *s = "4711"; 
int i = atoi(s)