Как из массива char взять значение int? Язык С

Скину код. То что, я тестирую в деве.

#include <stdio.h>
#include <stdlib.h>
int main() {
    int iterator=3;
    char text[50];
    char tex[40];
    sprintf(text,"iterator=%d\n\0",iterator);
    printf(text);
    scanf("%s",tex);
    int a;
    a=(int)text[9];
    int b;
    b=(int)tex[10];
    printf("%d",a);
    printf("%d",b);
    return 0;
}

Это весь код. Тут 2 варианта: либо я собираю массив char через sprintf, тогда цифра у меня будет десятым элементом, и потом я пытаюсь записать в переменную int a. Либо я ввожу массив через командную строку, например "5555555555555", и потом тоже пытаюсь достать цифру 5 оттуда в виде целого числа int. Компилятор ни на что не ругается. Однако cmd выводит непонятные значения. введите сюда описание изображения

Откуда они берутся? Это что, коды символов или ссылки? Что я не так делаю? Как всё-таки вытягивать из символьного массива числовое значение?

UPD: Нашел стандартную функцию atoi. Написал:

char c;
    c = text[9];
    int a;
    a = atoi(c);

Программа вылетает. Вывел переменную с, там 3.


Ответы (1 шт):

Автор решения: Sergey

Надо сделать так:

a = text[9] - '0';
b = tex[10] - '0';
printf("%d",a);
printf("%d",b);
→ Ссылка