gets, _getws

Pobiera wiersz ze strumienia stdin.Bardziej bezpieczne wersje tych funkcji są dostępne w gets_s, _getws_s.

Ważna uwagaWaż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ń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.

  

Odpowiednik w programie .NET Framework

System::Console::Read

Zobacz też

Informacje

We/Wy strumienia

fgets, fgetws

fputs, fputws

puts, _putws