Статья: Теория вычислительных процессов и структур

}

Основные процедуры для ввода строк называются gets и fgets:

# include <stdio.h>

char *gets (char *buf);

char *fgets (char *buf, int nsize, FILE *inf);

Процедура gets считывает последовательность символов из потока стандартного ввода (stdin), помещая все символы в буфер, на который указывает аргумент buf. Символы считываются до тех пор, пока не встретится символ перевода строки или конца файла. Символ перевода строки newline отбрасывается, и вместо него в буфер помещается нулевой символ, образуя завершённую строку. В случае возникновения ошибки или при достижении конца файла возвращается значение NULL.

Процедура fgets является обобщённой версией процедуры gets. Она считывает из потока inf в буфер buf до тех пор, пока не будет считано nsize-1 символов или не встретится раньше символ перевода строки newline, или не будет достигнут конец файла. В процедуре fgets символы перевода строки newline не отбрасываются, а помещаются в конец буфера (это позволяет вызывающей функции определить, в результате чего произошёл возврат из процедуры fgets). Как и процедура gets, процедура fgets возвращает указатель на буфер buf в случае успеха и NULL – в противном случае.

Следующая процедура yesno использует процедуру fgets для получения положительного или отрицательного ответа от пользователя, она также вызывает макрос isspace для пропуска пробельных символов в строке ответа:

# include <stdio.h>

# include <stype.h>

#define YES 1

#define NO 0

#define ANSWSZ 80

static char *pdefault = “Наберите ‘y’ (YES), или ‘n’ (NO)”;

static char *error = “Неопределённый ответ”;

int yesno (char *prompt)

{

char buf [ANSWSZ], *p_use, *p;

/* Выводит приглашение, если оно не равно NULL

Иначе использует приглашение по умолчанию pdefault */

p_use = (prompt != NULL) ? prompt : pdefault;

/* Бесконечный цикл до получения правильного ответа */

for (;;)

{

/* Выводит приглашение */

printf (“%s >”, p_use );

if (fgets (buf, ANSWSZ, stdin) = = NULL)

return EOF;

/* Удаляет пробельные символы */

К-во Просмотров: 568
Бесплатно скачать Статья: Теория вычислительных процессов и структур