Обсуждение:Язык Си в примерах/ASCII коды символов
Материал из Викиучебника
Здравствуйте. Откомпилировав и запустив программу обнаружил следующее:
1.После ввода символа и нажатии клавиши ENTER, помимо введённого символа и его кода программа выдает сам символ ENTER, то есть переводит строку и печатает номер символа ENTER - 10. Чтобы от этого избавиться я добавил условие if (ch != 10) перед функцией printf.
2. При нажатии ESC - программа продолжает работать. Видимо, программа особым образом обрабатывает символ ESC. Чтобы программа завершалась корректно, я заменил ESC на символ '!' (код 33).
3. При компиляции программа выдаёт предупреждение:
warning: return type of `main' is not `int'
В моей редакции программа выглядит следующим образом:
- include <stdio.h>
void main () {
int ch;
do {
ch = getchar();
if (ch != 10)
printf ("Вы нажали %c. ASCII код = %d\n", ch, ch);
} while (ch != 33);
}
Попробуй использовать вместо функции getchar() функцию getche() - она умеет обрабатывать ESC.
85.173.101.210 07:26, 9 марта 2008 (UTC)Мимо проходил
У меня была похожая проблема; мой вариант решения: вместо void main() пишем просто int main() или int main(void) и потом return 0; в соотв. месте. (может быть это особенности диалектов c или компилятора gcc). 94.50.187.3 15:48, 15 ноября 2009 (UTC) anonymous
мне кажется что проблему выдачи символа "ENTER" ("символ переход на новую строчку" он же "newline") можно избежать, если заставить программу просто считывать символ с клавиатуры, без необходимости подтверждения enter-ом (т.е. реакция по нажатию клавиши), вопрос только в том как это сделать...
То ли это можно сделать стандартным методом (использование другой функции считывания символов или использовать getchar по-другому), то ли понадобиться писать отсебятину...89.20.107.198 17:22, 9 ноября 2009 (UTC) anomymous