gets
, _getws
Akıştan stdin
bir satır alır. Bu işlevlerin daha güvenli sürümleri mevcuttur; bkz. gets_s
, _getws_s
.
Önemli
Bu işlevler eskidir. Visual Studio 2015'te başlayarak, bunlar CRT'de kullanılamaz. Bu işlevlerin gets_s
ve _getws_s
'nin güvenli sürümleri hala kullanılabilir. Bu alternatif işlevler hakkında bilgi için, bkz. gets_s
, _getws_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 *gets(
char *buffer
);
wchar_t *_getws(
wchar_t *buffer
);
template <size_t size>
char *gets(
char (&buffer)[size]
); // C++ only
template <size_t size>
wchar_t *_getws(
wchar_t (&buffer)[size]
); // C++ only
Parametreler
buffer
Giriş dizesi için depolama konumu.
Dönüş değeri
Başarılı olursa bağımsız değişkenini döndürür. İşaretçi NULL
bir hatayı veya dosya sonu koşulunu gösterir. Hangisinin oluştuğuna karar vermek için veya feof
kullanınferror
. ise buffer
NULL
, bu işlevler Parametre doğrulama bölümünde açıklandığı gibi geçersiz bir parametre işleyicisi çağırır. Yürütmenin devam etmesi için izin verilirse, bu işlevler döndürülerek NULL
olarak EINVAL
ayarlanırerrno
.
Açıklamalar
işlevi, gets
standart giriş akışından stdin
bir satırı okur ve içinde buffer
depolar. Satır, ilk yeni satır karakteri ('\n') dahil olmak üzere en fazla ve en çok karakterden oluşur. gets
ardından, satırı döndürmeden önce yeni satır karakterini null karakterle ('\0') değiştirir. Buna karşılık, fgets
işlev yeni satır karakterini korur. _getws
geniş karakterli bir sürümüdür gets
; bağımsız değişkeni ve dönüş değeri geniş karakterli dizelerdir.
Önemli
tarafından gets
okunan karakter sayısını sınırlamanın bir yolu olmadığından güvenilmeyen giriş arabellek taşmalarına kolayca neden olabilir. Bunun yerine fgets
kullanın.
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 |
---|---|---|---|
_getts |
gets |
gets |
_getws |
Gereksinimler
Yordam | Gerekli başlık |
---|---|
gets |
<stdio.h> |
_getws |
<stdio.h> veya <wchar.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// crt_gets.c
// compile with: /WX /W3
#include <stdio.h>
int main( void )
{
char line[21]; // room for 20 chars + '\0'
gets( line ); // C4996
// Danger: No way to limit input to 20 chars.
// Consider using gets_s instead.
printf( "The line entered was: %s\n", line );
}
20 karakterden uzun olan girişler satır arabelleğinin üzerinde taşacak ve neredeyse kesin olarak programın kilitlenmesine neden olacaktır.
Hello there!The line entered was: Hello there!