Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Замечание. Более простым способом компиляции многомодульных программ является передача их имен файлов автономному компилятору



Более простым способом компиляции многомодульных программ является передача их имен файлов автономному компилятору. Например, можно ввести bсс duped.c gets.c. Эта команда менее эффективна, так как она перекомпилирует файл GЕТS.C, даже если он уже скомпилирован в объектный файл GETS.OBJ.

И, наконец, самый простой способ создания законченной программы из нескольких модулей: необходимо добавить в модуль DUPED.С строки из модулей GЕТS.H и GЕТS.C, убрав при этом из модуля DUPED.С лишние строки (#include "gets.h" и т.п.)

Листинг 6.5. DUPED.С (функция GetStringAt())

1: #include <stdio.h>

2: #include <conio. h>

3: #include <string. h>

4: #include <alloc.h>

5: #include "gets.h"

6:

7: /* Замечание: эта программа должна быть скомпонована с

8: файлом CETS.OBJ, созданным при компиляции GETS.С */

9:

10: #define X_ENTRY 12 /* Координата ввода Х */

11: #define Y_ENTRY 10 /* Координата ввода Y */

12: #define PROMPT "String: " /* Приглашение на ввод */

13:

14: main()

15: {

16: char *s; /* Указатель на результат функции GetStringAt() */

17:

18: clrscr();

19: gotoxy(X_ENTRY - strlen(PROMPT), Y_ENTRY);

20: printf(“Stnng: ");

21: s = GetStringAt(X_ENTRY, Y_ENTRY, MAXLEN);

22: gotoxy(1,24);

23: if (s) {

24: puts("Your entry is:");

25: puts(s);

26: printf("Length == %d characters\n", strlen(s));

27: free(s);

28: } else

29: puts("Error duplicating string!");

30: return 0;

31: }

_______________________________________________________

Строка 21 вызывает функцию GetStringAt(), передавая ей три аргумента: координату х, координату у и максимальную длину результата. Функция располагает курсор в заданном месте (полезная вещь при разра­ботке экранов ввода данных) и ограничивает ввод требуемым числом символов.

В строке 23 программа проверяет результат функции GetStringAt(). Если она возвращает нуль, это значит, что функция strdup() не смогла создать копию ввода, возможно, из-за недостатка памяти в куче. Обратите вни­мание также на освобождение памяти строкой 27 после того, как она оказывается больше не нужной.





Дата публикования: 2015-01-23; Прочитано: 229 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...