Главная Контакты


  На сайте

  Java, JavaScript
  Документация Perl
  Документация PHP
  Документация ASP
  Новости сайта
  Flash
  Интернет протоколы
  Apache
  Уроки программирования
  Язык программирования C
 


Функции и структура программ


Теперь, обратим наше внимание на воплощение getop - функции, добывающая следующий оператор или операнд. Это простая задача. Пропустить пробелы и табуляцию. Если следующий символ не напоминает число или десятичную точку, вернуть его. В противном случае, собрать цепочку чисел (которые могут включать десятичную точку) и вернуть NUMBER, которое будет сигнализировать, что число - успешно добыто.
# Include

int getch (void);
void ungetch (int);

/ * Getop: получить следующий знак или числовой операнд * /
int getop (char s [])
{
int i, c;

while ((s [0] = c = getch ()) == '' | | c == '\ t')
;
s [1] = '\ 0';
if (! isdigit (c) & & c! = '.')
return c; / * не является числом * /
i = 0;
if (isdigit (c)) / * сохранить часть, которая является целым * /
while (isdigit (s [+ + i] = c = getch ()))
;
if (c == '') / * сохранить дробную часть * /
while (isdigit (s [+ + i] = c = getch ()))
;
s [i] = '\ 0';
if (c! = EOF)
ungetch (c);
return NUMBER;
}

Что такое getch и ungetch? Часто бывают случаи, когда программа не может определить, что она прочитала достаточно ввода, пока не прочитано много. Один из примеров - когда программа собирает знаки, составляющие число, и пока не встретится первый не-цифровой знак, число не считаться полным. Но тогда программой прочтено один лишний знак, к которому она не была готова.

Такую проблему можно было бы решить, будь возможной отмене прочитанного нежелательного знака. Тогда, каждый раз, как программа прочтет на один символ того, она сможет отбросить его назад на ввод, так остальные кода вести себя так, будто этого знака никогда прочтено не было. К счастью, отмена получения знака довольно легко имитировать путем написания пары кооперирующих функций. Поэтому, getch подает следующий знак ввода на рассмотрение, тогда как ungetch возвращает его обратно перед тем, как прочитать новый ввод.

Другие статьи по теме:

- Типы, операторы и выражения
- Функции и структура программ
- Введение в c++
- Символьные массивы
- Внешние переменные и область действия


Голосование:
Чего Вы хотели бы видеть больше на сайте?

Статей, документации
Скриптов
Программ для вебмастера
Я не знаю



Другие голосования

Обмен кнопочками:



Приглашаем Вас обменяться кнопочками! Обращайтесь к администратору.


Новые статьи:


Наши партнеры:





2006-2024 © SMTI.RU
Главная страница | Связаться с нами