C Преобразовать строку char * в массив int - PullRequest
0 голосов
/ 07 августа 2020

У меня есть строка char* ровно из 5 цифр. Я хочу преобразовать эту строку в целочисленный массив.

Я пробовал это:

#include <stdio.h>
#include <string.h>

int main()
{
     int numbers[5];
     const char* titleid = "TEST00411";
     const char* digits = titleid + 4;
     
     for (int i = 0; i < 5; ++i) {
          numbers[i] = digits[i];
          printf("LOOP: %d\n", digits[i]);
     }
     
     printf("%d\n", numbers[0]);
     printf("%d\n", numbers[1]);
     printf("%d\n", numbers[2]);
     printf("%d\n", numbers[3]);
     printf("%d\n", numbers[4]);
     
     return 0;
}

Вывод:

LOOP: 48
LOOP: 48
LOOP: 52
LOOP: 49
LOOP: 49
48
48
52
49
49

Почему не отображаются числа правильно (0, 0, 4, 1, 1)?

1 Ответ

2 голосов
/ 07 августа 2020

Вы получаете эквивалентные символы ASCII. Вычтите '0', чтобы получить исходное число из символов ASCII. Вот код, чтобы просто сделать это.

for (int i = 0; i < 5; ++i) {
          numbers[i] = digits[i]-'0';
          printf("LOOP: %d\n", digits[i]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...