2012-01-22 2 views
0

Я просто начинающий программист на C. При решении задачи программирования я столкнулся с необходимостью преобразования массива unsigned char в integer.Как преобразовать массив символов в целые числа?

Для примера:

unsigned char x[]="567"; 
unsigned char y[]="94"; 

Теперь я должен добавить целые значения в обоих x и y. То есть:

int sum=661; 

Каков самый простой способ сделать это?

ответ

3

Вы ищете atoi().

+0

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

+0

Но используя atoi, я получил эту ошибку «Невозможно преобразовать unsigned char * в const char *. – James

+0

Вы можете отбросить неподписанность, t много значит при использовании символа 'char' для хранения символов (в отличие от байтов). –

0

У вас есть как минимум два варианта, если вы используете стандартную библиотеку. Первая - atoi() Функция от stdlib.h и вторая - sscanf() функция от stdio.h.

Вот примеры:

atoi()

char number_string[] = "47"; 
int number; 

number = atoi(number_string); 

sscanf()

char number_string[] = "47"; 
int number; 
int return; 

return = sscanf(number_string, "%d", &number); 
/* it would be good idea to check the return value here */ 

sscanf() дает вам лучшую обработку ошибок. Возвращаемое значение sscanf() определяет, сколько элементов было успешно прочитано (сколько переменных было заполнено). Если произошел сбой ввода, возвращается EOF.

atoi() возвращает 0, если действительное преобразование не может быть выполнено.

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