2013-04-16 2 views
1

Как сохранить значение, указанное указателем char, в целочисленную переменную? У меня есть следующий код:Тип Casting from char * to 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

В языке С. .. – Vicky

ответ

1

Возможно, вы должны посмотреть в atoi для преобразования строк в int.

Обратите внимание, что atoi does no error checking используйте его, только если вы точно знаете, что такое ваш вход (например, постоянная строка, которая у вас есть в вашем примере). В противном случае ответ Эмиля Викстрема.

3

Строка в C - это всего лишь массив символов, а 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

Просто примечание, его код не преобразует первый символ, но сохраняет адрес первого массива символов в i. – 2013-04-16 07:35:39

+0

Армин, ты прав, конечно. –

+0

Спасибо за ваш ответ, на самом деле здесь значение tmp неизвестно, потому что я читаю значение tmp из другого файла, в этом случае я не могу использовать strtol правильно? – Vicky