2013-04-16 71 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