logo
несколько программ / bsp33

Функция cgets

Для ввода с клавиатуры строки символов можно использовать функцию cgets, работающую аналогично функции 0Ah прерывания MS-DOS INT 21h:

char *cgets(char *buffer);

Функция cgets описана в файле conio.h.

Перед вызовом cgets аргумент функции buffer должен указывать на массив, размер которого должен быть достаточным для хранения вводимой строки, завершающего строку нулевого байта и двух дополнительных байтов. Первый элемент массива buffer[0] должен содержать максимальную длину вводимой строки - как и для функции 0Ah прерывания MS-DOS INT 21h.

После завершения ввода второй элемент массива buffer[1] будет содержать длину введенной строки, сама строка будет завершаться символами новой строки NL, перевода строки LF и нулем.

Функция cgets возвращает указатель на начало введенной строки в буфере, то есть на третий элемент массива buffer[2].

В следующем фрагменте программы функция cgets используется для ввода целого числа:

#define MAX 80

char buf[MAX];

. . .

int i;

char *bufptr;

// Устанавливаем максимально допустимую длину строки

buf[0] = MAX + 2;

printf("\nВведите целое число: ");

// Вводим число, можно использовать клавиши редактирования

bufptr = cgets(buf);

// Преобразуем введенное число к формату int

// и выводим его

i = atoi(bufptr);

printf("\nВы ввели число %d", i);