Поделиться через


_cgets, _cgetws

Получает символьную строку из консоли. Существуют более безопасные версии этих функций; см. раздел _cgets_s, _cgetws_s.

Важно!

Этот API невозможно использовать в приложениях, запускаемых в среде выполнения Windows.Дополнительные сведения см. в статье Функции CRT, которые не поддерживаются с ключом /ZW.

char *_cgets( 
   char *buffer 
);
wchar_t *_cgetws(
   wchar_t *buffer
);
template <size_t size>
char *_cgets( 
   char (&buffer)[size]
); // C++ only
template <size_t size>
wchar_t *_cgetws(
   wchar_t (&buffer)[size]
); // C++ only

Параметры

  • buffer
    Место хранения данных.

Возвращаемое значение

_cgets и _cgetws возвращают указатель на начало строки в buffer[2]. Если buffer имеет значение NULL, эти функции вызывают обработчик недопустимого параметра, как описано в Проверка параметров. Если продолжение выполнения разрешено, эти функции возвращают NULL и устанавливают для errno значение EINVAL.

Заметки

Эти функции читают строку символов из консоли и сохраняют строку и ее длину по указателю buffer. Параметр buffer должен быть указателем на массив символов. Первый элемент массива, buffer[0], должен содержать максимальную длину (в символах) строки, которую нужно считать. Массив должен содержать достаточно элементов для хранения строки, нулевого символа завершения ('\0') и 2 дополнительных байта. Функция считывает символы, пока не встретит сочетание символов возврата каретки и новой строки (CR-LF) или не считает указанное количество символов. Строка хранится, начиная с buffer[2]. Если функция считывает CR-LF, она сохраняет нулевой символ ('\0'). Функция затем сохраняет фактическую длину строки во втором элементе массива, buffer[1].

Поскольку все клавиши редактирования активны, когда вызываются _cgets или _cgetws во время выполнения в окне консоли, нажатие клавиши F3 повторит последний ввод.

В C++ эти функции имеют шаблонные перегрузки, которые вызывают более новые и безопасные аналоги этих функций. Дополнительные сведения см. в разделе Безопасные перегрузки шаблонов.

Универсальное текстовое сопоставление функций

Подпрограмма Tchar.h

_UNICODE и _MBCS не определены

_MBCS определено

_UNICODE определено

_cgetts

_cgets

_cgets

_cgetws

Требования

Подпрограмма

Обязательный заголовок

_cgets

<conio.h>

_cgetws

<conio.h> или <wchar.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

// crt_cgets.c
// compile with: /c /W3
// This program creates a buffer and initializes
// the first byte to the size of the buffer. Next, the
// program accepts an input string using _cgets and displays
// the size and text of that string.
 
#include <conio.h>
#include <stdio.h>
#include <errno.h>

int main( void )
{
   char buffer[83] = { 80 };  // Maximum characters in 1st byte
   char *result;

   printf( "Input line of text, followed by carriage return:\n");

   // Input a line of text:
   result = _cgets( buffer ); // C4996
   // Note: _cgets is deprecated; consider using _cgets_s
   if (!result)
   {
      printf( "An error occurred reading from the console:"
              " error code %d\n", errno);
   }
   else
   {   
      printf( "\nLine length = %d\nText = %s\n",
              buffer[1], result );
   }
}
  

См. также

Ссылки

Ввод-вывод на консоль и порт

_getch, _getwch