2013-04-16 47 views
1

我怎麼能存儲由字符指針指向到一個整數變量的值?我有以下代碼:類型轉換成int

main() 
{ 
    int i; 
    char *tmp = "10"; 
    i = (int)tmp; 
    printf("value of i is %d",i); 
} 

我的代碼對於給定任務最有效嗎?我使用Visual Studio 2008

+0

什麼語言? C? C++? C#? –

+0

在C語言.. – Vicky

回答

1

你或許應該考慮atoi字符串爲int的轉換。

注意atoi does no error checking所以只使用它,如果你知道你的輸入是什麼(如你在你的例子有常量字符串)。否則,請使用EmilVikström的答案。

3

在C A字符串只是字符數組,並tmp指向字符串中的第一個字符。您的代碼將此指針值(內存地址)轉換爲整數並將其存儲在i中。

你真正想要做的是使用strtol在STDLIB:

#include <stdlib.h> 
main() 
{ 
    int i; 
    char *tmp = "10"; 
    i = (int) strtol(tmp, 0, 10); 
    printf("value of i is %d",i); 
} 
+0

剛一說明,他的代碼不轉換的第一個字符,但在我存儲第一字符數組的地址。 – 2013-04-16 07:35:39

+0

阿明,你當然是對的。 –

+0

感謝您的迴應,實際上這裏tmp的值是未知的,因爲我正在閱讀另一個文件中的tmp的值,在這種情況下,我不能使用strtol嗎? – Vicky