Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Hämtar en rad från stdin strömmen. Säkrare versioner av dessa funktioner är tillgängliga. se gets_s, _getws_s.
Viktigt!
Dessa funktioner är föråldrade. Från och med Visual Studio 2015 är de inte tillgängliga i CRT. De säkra versionerna av dessa funktioner och gets_s_getws_s, är fortfarande tillgängliga. Information om dessa alternativa funktioner finns i gets_s, _getws_s.
Viktigt!
Det här API:et kan inte användas i program som körs i Windows Runtime. Mer information finns i CRT-funktioner som inte stöds i universella Windows Platform-appar.
Syntax
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
Parameterar
buffer
Lagringsplats för indatasträng.
Returvärde
Returnerar argumentet om det lyckas. En NULL pekare anger ett fel eller ett villkor i slutet av filen. Använd ferror eller feof för att avgöra vilken som har inträffat. Om buffer är NULLanropar dessa funktioner en ogiltig parameterhanterare enligt beskrivningen i Parameterverifiering. Om körningen tillåts fortsätta returneras NULL dessa funktioner och anges errno till EINVAL.
Anmärkningar
Funktionen gets läser en rad från standardindataströmmen stdin och lagrar den i buffer. Raden består av alla tecken upp till och med det första nyradstecknet (\n).
gets ersätter sedan det nya radtecknet med ett null-tecken ('\0') innan raden returneras. Funktionen behåller däremot fgets det nya radtecknet.
_getws är en bred teckenversion av gets; dess argument och returvärde är strängar med många tecken.
Viktigt!
Eftersom det inte finns något sätt att begränsa antalet tecken som läss av getskan ej betrodda indata enkelt orsaka buffertöverskridningar. Använd fgets i stället.
I C++har dessa funktioner mallöverlagringar som anropar de nyare, säkra motsvarigheterna till dessa funktioner. Mer information finns i Skydda mallöverlagringar.
Som standard är den här funktionens globala tillstånd begränsat till programmet. Information om hur du ändrar det här beteendet finns i Globalt tillstånd i CRT.
Allmän textrutinmappning
| TCHAR. H-rutin |
_UNICODE och _MBCS inte definierad |
_MBCS definierad |
_UNICODE definierad |
|---|---|---|---|
_getts |
gets |
gets |
_getws |
Kravspecifikation
| Rutin | Obligatoriskt huvud |
|---|---|
gets |
<stdio.h> |
_getws |
<stdio.h> eller <wchar.h> |
Mer kompatibilitetsinformation finns i Kompatibilitet.
Example
// 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 );
}
Indata som är längre än 20 tecken överskrider linjebufferten och gör nästan säkert att programmet kraschar.
Hello there!The line entered was: Hello there!