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

Замечание. Вы не сможете скомпилировать и запустить программу GETSTR как EasyWin-приложение



Вы не сможете скомпилировать и запустить программу GETSTR как EasyWin-приложение. Скомпилируйте программу как DОS-приложение либо в IDE, либо в DOS, введя bcc getstr.с Затем для выполнения програм­мы под управлением DOS введите getstr.

Листинг 6.1. GETSTR.С (чтение строк с использованием функции cgets())

1: #include <stdio.h>

2: #include <conio.h>

3:

4: #define MAXLEN 18 /* Место для 15 символов */

5:

6: void ShowChars(char *s);

7:

8: main()

9: {

10: char buffer[MAXLEN];

11: char *result;

12:

13: clrscr();

14: gotoxy(1,12);

15: cputs("Enter a string: ");

16: buffer[0] = MAXLEN - 2;;

17: result = cgets(buffer); ..

18: gotoxy(1,14);

19: cputs("result == ");

20: cputs(result);

21: gotoxy(1,16);

22: cputs("&buffer[2] == ");

23: cputs(&buffer[2]);

24: gotoxy(1,18);

25:.ShowChars(bufrer);

26: gotoxy(1,24);

27: return 0;

28: }

29:

30: void ShowChars(char *s)

31: {

32: int i;

33:

34: cprintf("[%d] [%d]", s[0], s[1]);

35: for (i = 2; s[i]!= NULL; i++)

36: cprintr(“ [%c]", s[i]);

37: cputs(" [NULL]");

38: }

_______________________________________________________

Если вы запустили программу GETSTR и ввели строку Borland C++, программа отобразит следующее:

Enter a string: Borland C++

result == Borland C++

&bufrer[2] == Borland C++

[16] [11] [В] [о] [г] [1] [a] [n] [d] [ ] [С] [+] [+] [NULL]

В последней строке приведено содержимое массива buffer. Первый символ равен максимальной длине строки, включая завершающий нуль. Это значение должно быть присвоено до вызова функции cgets(). После возврата из функции второе значение будет равно числу введенных символов (в данном случае 11), которое не включает завершающий нуль. Введенные символы начинаются с индекса [2], и последним символом, как всегда, является NULL.

В строке 16 показана подготовка к вызову функции cgets(), в строке 17 - сам вызов с сохранением ре­зультата в указателе на значение типа char:

result = cgets(buffer);

Указатель result в этот момент содержит адрес позиции buffer[2], в которой находится первый символ но­вой строки. (Если пользователь программы нажмет <Enter> без ввода какого-либо текста, buffer[2] будет ра­вен нулю.) Строка 20 отображает результат. Строка 23 делает то же самое, но в качестве начала строки ис­пользует выражение &buffer[2].

Функция ShowChars() в строках 30-38 посимвольно отображает содержимое массива buffer после вызова функции cgets(). Строки 34 и 36 вызывают функцию cprintf(), которая аналогична функции printf(), но дос­тупна только в Borland C++ тем программам, которые включают файл CONIO.H. Функция cprintf() быстро отображает текст, выполняя запись непосредственно в видеобуферы ПК или вызывая программы BIOS. Но она не обладает свойством переносимости и не распознает такие управляющие символы, как \п.





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



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