Таким образом, поскольку все мы, вероятно, знаем, atoi
преобразовывает символ в число. Но, что Вы делаете, если Вы только хотите один из элементов массива вместо целого массива?
Посмотрите на следующее:
for (h = 0; h < 5; h++)
{
num[h] = atoi(temp[h]);
}
Предположите, что цифра является массивом типа int
и тот временный файл и массив типа char
. Это дает мне одну из тех раздражающих проблем преобразования:
Недопустимое преобразование от 'символа' до 'символа константы *'
Какие-либо предложения о том, как преобразовать единственный элемент массива символов к интервалу с помощью atoi?
Если вы хотите преобразовать только один символ, вам не нужно использовать 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
. Этот указатель должен указывать на строку с завершающим нулем.
Помимо использования его интегрального значения, как показано Джеймсом, вы можете поместить его в отдельный буфер:
char buf[2] = { temp[h], '\0' };
num[h] = atoi(buf);