Как Вы используете atoi для присвоения отдельных элементов массива символов?

Таким образом, поскольку все мы, вероятно, знаем, atoi преобразовывает символ в число. Но, что Вы делаете, если Вы только хотите один из элементов массива вместо целого массива?

Посмотрите на следующее:

for (h = 0; h < 5; h++)
{
    num[h] = atoi(temp[h]);
}

Предположите, что цифра является массивом типа int и тот временный файл и массив типа char. Это дает мне одну из тех раздражающих проблем преобразования:

Недопустимое преобразование от 'символа' до 'символа константы *'

Какие-либо предложения о том, как преобразовать единственный элемент массива символов к интервалу с помощью atoi?

7
задан Matthew Slattery 14 July 2010 в 23:50
поделиться

2 ответа

Если вы хотите преобразовать только один символ, вам не нужно использовать atoi () :

if (temp[h] >= '0' && temp[h] <= '9')
{
    num[h] = temp[h] - '0';
}
else
{
    // handle error:  character was not a digit
}

В C значение каждой цифры на единицу больше, чем значение предыдущей цифры , так что это гарантированно сработает.

Причина, по которой atoi () не работает, заключается в том, что он принимает в качестве аргумента const char * , а не char . Этот указатель должен указывать на строку с завершающим нулем.

13
ответ дан 6 December 2019 в 10:47
поделиться

Помимо использования его интегрального значения, как показано Джеймсом, вы можете поместить его в отдельный буфер:

char buf[2] = { temp[h], '\0' };
num[h] = atoi(buf);
5
ответ дан 6 December 2019 в 10:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: