Как вы используете 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);