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;
- Zeilenumbruch oder EOF nicht angetroffen nach dem Speichern von n - 1 Zeichen im Puffer.
gets_s zuerst die Zeichen von stdin bis zum Zeilenumbruchzeichen, dem Dateiende oder einem Lesefehler, verwirft sie und ruft dann den Constraint-Handler auf.gets_s nur dann garantiert verfügbar, wenn __STDC_LIB_EXT1__ von der Implementierung definiert ist und wenn der Benutzer __STDC_WANT_LIB_EXT1__ vor dem Einbinden von <stdio.h> auf die ganzzahlige Konstante 1 setzt.Inhalt |
[bearbeiten] Parameter
| str | - | ein Zeichenarray, in das die Zeichen von stdin geschrieben werden sollen |
| n | - | maximale Anzahl von Zeichen, die in das von str gezeigte Array geschrieben werden können |
[bearbeiten] Rückgabewert
str bei Erfolg, ein Nullzeiger bei Fehler.
Wenn der Fehler durch das Ende der Datei verursacht wurde, wird zusätzlich der eof-Indikator (siehe feof()) für stdin gesetzt. Wenn der Fehler durch einen anderen Fehler verursacht wurde, wird der error-Indikator (siehe ferror()) für stdin gesetzt.
[bearbeiten] Hinweise
Die Funktion gets() führt keine Grenzenprüfung durch, daher ist diese Funktion extrem anfällig für Pufferüberlaufangriffe. 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 Korrigendum zum C99-Standard als veraltet markiert und im C11-Standard vollständig entfernt. fgets() und gets_s() sind die empfohlenen Ersatzfunktionen.
WARNUNG: Verwenden Sie niemals gets().
[bearbeiten] Referenzen
- C23-Standard (ISO/IEC 9899:2024)
- K.3.5.4.1 Die Funktion gets_s (S. TBD)
- C17-Standard (ISO/IEC 9899:2018)
- K.3.5.4.1 Die Funktion gets_s (S. TBD)
- C11-Standard (ISO/IEC 9899:2011)
- K.3.5.4.1 Die Funktion gets_s (S. 602-603)
- C99-Standard (ISO/IEC 9899:1999)
- 7.19.7.7 Die Funktion gets (S. 298)
- C89/C90-Standard (ISO/IEC 9899:1990)
- 4.9.7.7 Die Funktion gets
[bearbeiten] Siehe auch
| (C11)(C11)(C11) |
liest formatierte Eingaben aus stdin, einem Dateistream oder einem Puffer (Funktion) |
| liest einen Zeichenstring aus einem Dateistream (Funktion) | |
| schreibt einen Zeichenstring in einen Dateistream (Funktion) | |
| (Dynamischer Speicher-TR) |
liest von einem Stream in einen automatisch skalierten Puffer bis zum Trennzeichen/Zeilenende (Funktion) |
| C++ Dokumentation für gets
| |