Задать вопрос
DimaChemerys
@DimaChemerys

Как преобразовать массив char в массив int?

Есть массив char K
char K[99];
который "вынимает" числа из файла(учитывая то что в файле может быть и меньше чем 100 чисел), но, у меня есть ещё один массив, который состоит из цифр от 0 до 9. Задание в том что-бы сравнить эти массивы, и выяснить какого числа нет в массиве K. Пока-что просто заменяю одинаковые цифры на 10. И потом при выводе через if проверяю, что если 10 не выводить и наоборот.(тут всё понятно)
Но так как char это символы, а int числа все складывается не так как хотелось бы. Попробовал сделать так, но всё четно:
for(int x = 0; x < 10; x++)
    {
        for (int i = 0; i < 100; i++)
        {
            if(L[x] == int(K[i]))
            {
                L[x] = 10;
            }
        }
    }

Как мне решить такую вот проблему?
  • Вопрос задан
  • 4509 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
@sergio_nsk
1. char K[100];
2. if(L[x] + '0' == int(K[i]))
Ответ написан
Комментировать
@res2001
Developer, ex-admin
1. Если что char - это целый тип, можно напрямую, без явного приведения типов сравнивать с int.
В вашем случае в нем хранится не символ, а ASCII код символа, т.е. просто целое число. Но с тем же успехом можно туда записать любое другое число входящее в диапазон возможных значений:
char c = 10;
2. Приведение типов в стиле Си выглядит так: (int)K[i]
3. Для преобразования ASCII кода в число используйте вариант, предложенный sergio_nsk
или так K[i] - '0'
или можно массиву L присваивать непосредственно коды символов, а не числа от 0-9 (и не важно, что массив int, а не char)
L[0] = '0';
L[1] = '1';
Тогда можно сравнивать без преобразований.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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