gets, _getws
Pobiera wiersz ze strumienia stdin.Bardziej bezpieczne wersje tych funkcji są dostępne w gets_s, _getws_s.
Ważne |
---|
Tego API nie można używać w aplikacjach korzystających ze środowiska wykonawczego Windows.Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane przez /ZW. |
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
Parametry
- buffer
Lokalizacja magazynowa ciągu wejściowego.
Wartość zwracana
Zwraca wartość argumentu, jeśli kończy się pomyślnie.Wskaźnik NULL wskazuje warunek błędu lub końca pliku.Użyj ferror lub feof do określenia, który z nich ma wystąpić.Jeśli buffer ma wartość NULL, te funkcje wywołują procedurę obsługi nieprawidłowego parametru, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może być kontynuowane, te funkcje zwracają NULL i ustawiają mechanizm errno jako EINVAL.
Uwagi
gets funkcja odczytuje wiersz ze standardowego strumienia wejściowego stdin i zapisuje go w buffer.Linia składa się z wszystkich znaków, w tym pierwszego znaku nowego wiersza (\n).gets następnie zastępuje znak nowego wiersza znakiem null (\0) przed zwróceniem linii.W przeciwieństwie, funkcja fgets zachowuje znak nowego wiersza._getws jest wersją znaków dwubajtowych gets; argumenty i wartości zwracane to ciągi znaków dwubajtowych.
Uwaga dotycząca zabezpieczeń |
---|
Ponieważ nie ma sposobu, aby ograniczyć liczbę znaków czytanych przez argument gets, niezaufane dane wejściowe mogą łatwo spowodować przeładowanie buforu.Zamiast tego użyj elementu fgets. |
W języku programowania C++ funkcje te mają przeciążenia szablonu, które wywołują nowsze, bezpieczne odpowiedniki tych funkcji.Aby uzyskać więcej informacji, zobacz Przeciążenia bezpiecznych szablonów.
Rutynowe mapowania zwykłego tekstu
Procedura Tchar.h |
_UNICODE & _MBCS nie zdefiniowano |
_MBCS zdefiniowano |
_UNICODE zdefiniowany |
---|---|---|---|
_getts |
gets |
gets |
_getws |
Wymagania
Procedura |
Wymagany nagłówek |
---|---|
gets |
<stdio.h> |
_getws |
<stdio.h> lub <wchar.h> |
Dodatkowe informacje o zgodności – zobacz: Zgodność.
Przykład
// 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 );
}
Należy zauważyć, że dane wejściowe dłuższe niż 20 znaków przepełnią bufor wierszy i prawie na pewno na spowodują awarię programu.