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