2009-05-15 2 views
84

Возможные Дубликаты:
How to convert a single char into an int
Character to integer in CКак преобразовать символ в целое число в C?

Может ли тело сказать мне, как преобразовать char в int?

char c[]={'1',':','3'}; 

int i=int(c[0]); 

printf("%d",i); 

Когда я пытаюсь это дает 49.

+0

Проще всего сделать 'int x = -1; if (isdigit (c)) {x = c - 48; } ' – FedericoCapaldo

ответ

35

Стандартная функция atoi() скорее всего делать то, что вы хотите.

Простой пример использования «atoi»:

#include <unistd.h> 

int main(int argc, char *argv[]) 
{ 
    int useconds = atoi(argv[1]); 
    usleep(useconds); 
} 
+11

atoi принимает char * не символ. –

+1

Разве это не просто семантика? Символ char * также дает символ, просто передайте адрес. Но хорошо, я не смотрел на специфику, мой C начинает получать ржавый вид. –

+45

Если вы передадите & c чему-то ожидающему строку с нулевым завершением, вы окажетесь в мире обид. –

144

В старые времена, когда мы могли бы предположить, что большинство компьютеров используется ASCII, мы бы просто сделать

int i = c[0] - '0'; 

Но в эти дни Unicode, это не очень хорошая идея. Никогда не было хорошей идеи, должен ли ваш код работать на компьютере, отличном от ASCII.

Редактировать: Хотя это выглядит хакерским, очевидно, это is гарантировано стандартом для работы. Спасибо @Earwicker.

+0

Не работает. Я ожидаю ответа как 1, но он дает 6-значный мусор nummber. Думаю – Cute

+0

Извините, я изменил его на c [0], так как это пример кода. –

+0

Как юникод может повлиять на представление цифры в переменной char? –

Смежные вопросы