Создание книги (выключить)

Обсуждение:Язык Си в примерах/ASCII коды символов

Материал из Викиучебника

Перейти к: навигация, поиск

Здравствуйте. Откомпилировав и запустив программу обнаружил следующее:

1.После ввода символа и нажатии клавиши ENTER, помимо введённого символа и его кода программа выдает сам символ ENTER, то есть переводит строку и печатает номер символа ENTER - 10. Чтобы от этого избавиться я добавил условие if (ch != 10) перед функцией printf.

2. При нажатии ESC - программа продолжает работать. Видимо, программа особым образом обрабатывает символ ESC. Чтобы программа завершалась корректно, я заменил ESC на символ '!' (код 33).

3. При компиляции программа выдаёт предупреждение:

warning: return type of `main' is not `int'

В моей редакции программа выглядит следующим образом:

  1. 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