|
Функции и структура программКак они сотрудничают вместе - не сложно. Функция ungetch помещает вытолкнут знак в совместно используемый буфер - символьный массив. Функция getch читает из буфера, если там что-то есть, и вызывает getchar, если буфер пуст. Должно существовать также индексная переменная, которая бы регистрировала положение текущего знака в буфере. Поскольку, для getch и ungetch, буфер и индекс - общие, и должны сохранять свои значения между вызовами, то они должны были внешними для обеих функций. Мы можем написать getch и ungetch с внешними зминннимы, как: # Define BUFSIZE 100 char buf [BUFSIZE]; / * буфер для ungetch * / int bufp = 0; / * следующая свободная позиция в buf * / int getch (void) / * получить (возможно вытолкнут) знак * / { return (bufp> 0)? buf [- bufp]: getchar (); } void ungetch (int c) / * вытолкнуть знания обратно в ввод * / { if (bufp> = BUFSIZE) printf ("ungetch: too many characters \ n"); else buf [bufp + +] = c; } Стандартная библиотека включает функцию ungetch, позволяющая вытолкнуть один знак: мы рассмотрим ее в далее. Мы же использовали массив для вытолкнуть знаков, вместо одного единственного, чтобы продемонстрировать более общий подход. Правила области действия Функции и внешние переменные, которые составляют программу на C, не обязательно должны быть компилируемых одновременно; исходный текст программы может храниться в нескольких файлах и предварительно компилируемые функции могут быть загруженными из библиотек. Среди вопросов, которые нас могут заинтересовать, является Как написать объявление, поэтому переменные объявлены должным образом во время компиляции? Как объявление огранизованной, поэтому все части будут соединены как следует при загрузке программы? Как объявление организованно, поэтому существовать лишь одна копия? Как начать внешние переменные? Давайте обсудим эти вопросы путем реогранизации нашей программы-калькулятора в несколько файлов. С практической точки зрения, калькулятор, это слишком маленькая программа, чтобы разбивать ее, но она служит хорошим примером вопросов, викикають в больших программах. Продолжение статьи: ч.1 Продолжение статьи: ч.2 Продолжение статьи: ч.3 Продолжение статьи: ч.4 Продолжение статьи: ч.5 Продолжение статьи: ч.6 Продолжение статьи: ч.7 Продолжение статьи: ч.8 Продолжение статьи: ч.9 Продолжение статьи: ч.10 Продолжение статьи: ч.11 Продолжение статьи: ч.12 Продолжение статьи: ч.13 Продолжение статьи: ч.14 Продолжение статьи: ч.15 Продолжение статьи: ч.16 Продолжение статьи: ч.17 Продолжение статьи: ч.18 Продолжение статьи: ч.19 Продолжение статьи: ч.20 Продолжение статьи: ч.21 Другие статьи по теме: - Введение в c++- Внешние переменные и область действия - Типы, операторы и выражения - Символьные массивы - Функции и структура программ |
|
2006-2024 © SMTI.RU Главная страница | Связаться с нами |