преобразование целых чисел в символы в C (согласно таблице ASCII) - PullRequest
0 голосов
/ 09 декабря 2011

искал везде, но не смог найти правильный ответ.

проблема довольно проста:

мне нужно преобразовать целочисленные значения ASCII в символы.например, согласно таблице ASCII, 108 означает «ч» символ.Но когда я пытаюсь преобразовать его следующим образом:

int i = 108
char x = i

и когда я печатаю его, он показывает мне 's', независимо от того, какой номер я наберу (94,111 ...).

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

int i = 108;
char x = i + '0'

но у меня та же проблема!Кстати, у меня нет проблем с преобразованием символов в целые числа, поэтому я не понимаю, в чем проблема: / спасибо заранее

Ответы [ 3 ]

1 голос
/ 09 декабря 2011

Похоже, что ваше утверждение printf неверно.

Выполнение printf("%c", c), где значение c равно 108, напечатает письмо l ... Если вы посмотрите на http://www.asciitable.com/ вы увидите, что 108 не h;)

1 голос
/ 09 декабря 2011

Вот как ты это делаешь.Вы, вероятно, хотите, чтобы он был без знака.

Может быть, ваш printf не так?

Ниже приведен пример его работы:

// Print a to z.
int i;
for (i = 97; i <= 122; i++) {
    unsigned char x = i;
    printf("%c", x);
}

Это печатает abcdefghijklmnopqrstuvwxyz как и ожидалось.(См. На ideone )

Обратите внимание, вы также можете printf("%c", i); напрямую;char - это просто целочисленный тип меньшего размера.

Если вы пытаетесь сделать printf("%s", x);, обратите внимание, что это неверно.%s означает печать как строку, однако символ не является строкой.

Если вы сделаете это, он будет обрабатывать значение x как адрес памяти и начнет читать строку оттуда до тех пор, покапоражает \0.Если это просто привело к печати s, вам повезло.При этом вы, скорее всего, в конечном итоге получите ошибку сегментации, поскольку получите доступ к некоторой памяти, которая, скорее всего, не ваша.(И почти наверняка не то, что вы хотите.)

0 голосов
/ 09 декабря 2011

Полагаю, ваше выражение printf выглядит так:

printf("s", x);

.. когда на самом деле вы, вероятно, имели в виду:

printf("%s", x);

... что все еще не так; ожидается строка символов, например:

char* x = "Testing";
printf("%s", x);

То, что вы действительно хотите, это:

int i = 108;
char x = i + '0';
printf("%c", x);

... который в моей системе выводит £

...