Как преобразовать тип одного элемента из массива?
Использовал такой метод:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char gar[3] = { '3', '6', '9' };
int far = atoi(gar[0]);
printf( "%d", far);
return 0;
}
выдаёт ошибку
assignment makes pointer from integer without a cast
Но даже с переводом я не понял, что это значит и как это исправить.
Если массив gar
одноэлементный, то код работает правильно и выводит на экран цифру 3
.
Что делаю не так и какие ещё есть способы решения этой задачи?
Ответы (1 шт):
atoi
работает со строкой. Один символ туда передавать нельзя. Надо передавать указатель на строку - массив символов, завершающийся нулём.
Например buffer
- строка из двух символов. Первый - пробел, второй - '\0'
. В первый символ кладётся цифра из массива, весь буфер передаётся в atoi
:
#include <stdio.h>
#include <stdlib.h>
int main() {
char gar[] = {'3', '6', '9'};
char buffer[] = " ";
buffer[0] = gar[0];
printf("%d\n", atoi(buffer));
}
P.S. Способ из комментария (gar[0] - '0'
) не костыльный. Язык гарантирует, что это будет работать везде и очень быстро. Обычно его и применяют.