gets, gets_s
|
Definiert in Header
<stdio.h>
|
||
|
char
*
gets
(
char
*
str
)
;
|
(1) | (entfernt in C11) |
|
char
*
gets_s
(
char
*
str, rsize_t n
)
;
|
(2) | (seit C11) |
- n ist null;
- n ist größer als RSIZE_MAX ;
- str ist ein Nullzeiger;
- endline oder eof nicht erreicht nach dem Speichern von n - 1 Zeichen im Puffer.
gets_s
zuerst das Lesen und Verwerten der Zeichen von
stdin
bis zum Zeilenumbruchzeichen, Dateiende-Zustand oder Lesefehler, bevor der Constraint-Handler aufgerufen wird.
gets_s
nur garantiert verfügbar, wenn
__STDC_LIB_EXT1__
durch die Implementierung definiert ist und wenn der Benutzer
__STDC_WANT_LIB_EXT1__
auf den Integer-Konstantenwert
1
setzt, bevor
<stdio.h>
inkludiert wird.
Inhaltsverzeichnis |
Parameter
| str | - | ein Zeichenarray, in das die Zeichen von stdin geschrieben werden sollen |
| n | - | maximale Anzahl von Zeichen, die in das durch str adressierte Array geschrieben werden können |
Rückgabewert
str bei Erfolg, ein Nullzeiger bei Misserfolg.
Wenn der Fehler durch eine Dateiende-Bedingung verursacht wurde, wird zusätzlich der eof -Indikator gesetzt (siehe feof() ) auf stdin . Wenn der Fehler durch einen anderen Fehler verursacht wurde, wird der error -Indikator gesetzt (siehe ferror() ) auf stdin .
Hinweise
Die
gets()
-Funktion führt keine Grenzprüfungen durch, daher ist diese Funktion extrem anfällig für Pufferüberlauf-Angriffe. Sie kann nicht sicher verwendet werden (es sei denn, das Programm läuft in einer Umgebung, die einschränkt, was auf
stdin
erscheinen kann). Aus diesem Grund wurde die Funktion im dritten Corrigendum zum C99-Standard als veraltet markiert und im C11-Standard vollständig entfernt.
fgets()
und
gets_s()
sind die empfohlenen Ersetzungen.
WARNUNG: Verwenden Sie niemals
gets()
.
Referenzen
- C23-Standard (ISO/IEC 9899:2024):
-
- K.3.5.4.1 Die gets_s-Funktion (S.: TBD)
- C17-Standard (ISO/IEC 9899:2018):
-
- K.3.5.4.1 Die gets_s-Funktion (S.: TBD)
- C11-Standard (ISO/IEC 9899:2011):
-
- K.3.5.4.1 Die gets_s-Funktion (S: 602-603)
- C99-Standard (ISO/IEC 9899:1999):
-
- 7.19.7.7 Die gets-Funktion (S. 298)
- C89/C90 Standard (ISO/IEC 9899:1990):
-
- 4.9.7.7 Die gets-Funktion
Siehe auch
|
(C11)
(C11)
(C11)
|
liest formatierten Input von
stdin
, einem Dateistrom oder einem Puffer
(Funktion) |
|
liest eine Zeichenkette aus einem Dateistrom
(Funktion) |
|
|
schreibt eine Zeichenkette in einen Dateistrom
(Funktion) |
|
|
(dynamic memory TR)
|
liest von einem Strom in einen automatisch vergrößerten Puffer bis Trennzeichen/Zeilende
(Funktion) |
|
C++-Dokumentation
für
gets
|
|