_cgets
, _cgetws
Konsoldan bir karakter dizesi alır. Bu işlevlerin daha güvenli sürümleri mevcuttur; bkz. _cgets_s
, _cgetws_s
.
Önemli
Bu işlevler eskidir. Visual Studio 2015'te başlayarak, bunlar CRT'de kullanılamaz. Bu işlevlerin _cgets_s ve _cgetws_s güvenli sürümleri hala kullanılabilir. Bu alternatif işlevler hakkında bilgi için, bkz. _cgets_s
, _cgetws_s
.
Önemli
Bu API, Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz. Daha fazla bilgi için bkz. Evrensel Windows Platformu uygulamalarında desteklenmeyen CRT işlevleri.
Sözdizimi
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
Parametreler
buffer
Verilerin depolama konumu.
Dönüş değeri
_cgets
ve _cgetws
dizenin başlangıcına bir işaretçi döndürür.buffer[2]
ise buffer
NULL
, bu işlevler Parametre doğrulama bölümünde açıklandığı gibi geçersiz parametre işleyicisini çağırır. Yürütmenin devam etmesi için izin verilirse, geri döner NULL
ve olarak EINVAL
ayarlanırerrno
.
Açıklamalar
Bu işlevler konsolundan bir karakter dizesi okur ve dizeyi ve uzunluğunu ile buffer
işaret ettiği konumda depolar. parametresi bir buffer
karakter dizisinin işaretçisi olmalıdır. Dizinin ilk öğesi olan buffer[0]
, okunacak dizenin uzunluk üst sınırını (karakter cinsinden) içermelidir. Dizi, dizeyi tutmak için yeterli öğe, sonlandırıcı bir null karakter ('\0') ve 2 ek bayt içermelidir. İşlev, satır başı besleme (CR-LF) bileşimi veya belirtilen karakter sayısı okunana kadar karakterleri okur. Dize, konumundan buffer[2]
başlayarak depolanır. İşlev bir CR-LF okursa null karakteri ('\0') depolar. İşlev daha sonra dizenin gerçek uzunluğunu ikinci dizi öğesinde buffer[1]
depolar.
Konsol penceresindeyken veya _cgetws
çağrıldığında _cgets
tüm düzenleme tuşları etkin olduğundan, F3 tuşuna basıldığında son girilen giriş yinelenir.
C++ dilinde, bu işlevlerin daha yeni ve güvenli karşılıklarını çağıran şablon aşırı yüklemeleri vardır. Daha fazla bilgi için bkz . Güvenli şablon aşırı yüklemeleri.
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.
Genel metin yordamı eşlemeleri
Tchar.h yordamı | _UNICODE ve _MBCS tanımlanmadı |
_MBCS tanımlanan |
_UNICODE tanımlanan |
---|---|---|---|
_cgetts |
_cgets |
_cgets |
_cgetws |
Gereksinimler
Yordam | Gerekli başlık |
---|---|
_cgets |
<conio.h> |
_cgetws |
<conio.h> veya <wchar.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// 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 );
}
}
A line of input.Input line of text, followed by carriage return:
Line Length = 16
Text = A line of input.