Хранение целых чисел в массиве символов в C - PullRequest
0 голосов
/ 18 января 2019

Я делаю некоторую работу для Uni и написал программу, которая хранит целые числа в массиве символов, преобразует их в их значения ASCII и печатает их в конце. Мой код не работал раньше и только начал работать, когда я изменил «% c» на «% i» в моей строке scanf. Мой вопрос: почему это должен быть "% i", когда я хочу хранить эти числа в массиве char, а не в массиве Int. Спасибо!

Мой код:

#include <stdio.h>

int main()
{

    int i; /counter
    char numbers[12];
    printf("Please enter 12 Numbers\n");
    for(i = 0; i < 12; i++){
        printf("please enter the  %i. Number\n", i+1);
        scanf("%i", &numbers[i]);// <-- changed "%c" to "%i" and it worked.why?

    }
    for(i = 0; i < 12;i++){
        printf("The %i.ASCII value is %i and has the Char %c\n", i+1, numbers[i], numbers[i]);
    }




    return 0;
}

1 Ответ

0 голосов
/ 18 января 2019

%c для чтения одного символа. Так, например, если вы введете "123", scanf будет читать '1' в переменную char и оставит остаток в буфере.

С другой стороны %i является спецификатором для int и поэтому приведет к неопределенному поведению при попытке чтения в char.

Я думаю, что вы ищете спецификатор %hhi, который читает число в переменную char.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...