logo

fgets()-Funktion in C

In der C-Programmierung, Handhabung Eingang Und Ausgabe Aktivitäten sind unerlässlich. Fgets() ist eine der vielen Funktionen, die für verfügbar sind Eingang . Mithilfe dieser robusten Funktion können Entwickler Informationen aus einem bestimmten Stream sicher und präzise lesen. In diesem Artikel werden wir das untersuchen ins Und outs von fgets() , es durchgehen Syntax, Anwendung, Beispielcode , Und erwartete Ergebnisse .

Der fgets()-Funktion , kurz für 'Datei-Get-String' , wird häufig verwendet, um eine Zeichenfolge aus einem Dateistream zu lesen oder Standardeingabe (stdin) . Es bietet einen sichereren Ersatz für die veralteten gets()-Funktion , das früher verwendet wurde, jetzt aber ein Sicherheitsrisiko darstellt. Die Funktion fgets() Bietet eine Möglichkeit, die Anzahl der gelesenen Zeichen zu begrenzen und Newline-Zeichen effektiv zu verarbeiten.

Die Syntax für fgets() lautet wie folgt:

 char *fgets(char *str, int size, FILE *stream); 

Die Parameter sind wie folgt aufgeteilt:

str: Es handelt sich um einen Verweis auf das Zeichenarray (String), das zum Speichern der Eingabe verwendet wird.

Fuchs oder Wolf

Größe: Die Gesamtzahl der Zeichen (einschließlich der Nullzeichen '0' ), die gelesen werden kann.

Strom: Das Zeigegerät auf den Eingabedateistream oder stdin Das fgets() werde vorlesen.

mylivecricket in

Um die Funktionsweise von fgets() besser zu verstehen, schauen wir uns ein Beispiel an:

Beispiel:

 #include int main() { char input[100]; printf('Enter a string: '); fgets(input, sizeof(input), stdin); printf('You entered: %s', input); return 0; } 

Ausgabe:

 Enter a string: Hello, World! You entered: Hello, World! Enter a string: This is a very long string that exceeds the limit of the input buffer. You entered: This is a very long string that exceeds the limit of the input buffer. If a user types an empty text by simply pressing the Enter key: Enter a string: You entered: 

Erläuterung:

Im obigen Beispiel beginnen wir mit der Einbindung der entsprechenden Header-Datei, 'stdio.h' . Danach wird die Eingabezeichenfolge als Zeichenarray-Eingabe mit einer Größe von 100 definiert.

Benutzen printf()-Funktion , fordert das Programm den Benutzer auf, eine Zeichenfolge einzugeben. Danach, stdin wird als verwendet Eingabestrom , Und fgets() wird mit Eingabe als Zielzeichenfolge verwendet, sizeof(Eingabe) und maximale Größe zum Lesen. Danach verwendet das Programm printf() um die eingegebene Zeichenfolge auszugeben.

Fgets() Funktion kann lesen Und speichern das Newline-Zeichen 'N' wenn es erscheint, bevor die maximale Größe erreicht ist. Dadurch lässt sich feststellen, ob die Eingabezeile vollständig gelesen oder aus Platzgründen abgeschnitten wurde.

Beispiel:

Mit dem geänderten Code-Snippet können Sie das verwenden strcspn()-Methode Zu löschen Die Neue Zeile Zeichen aus der Eingabezeichenfolge:

arp – ein Befehl
 #include #include int main() { char input[100]; printf('Enter a string: '); fgets(input, sizeof(input), stdin); input[strcspn(input, '
')] = ''; // Remove the newline character printf('You entered: %s', input); return 0; } 

Ausgabe:

 Enter a string: Hello World You entered: Hello World 

Erläuterung:

Die Länge der Teilzeichenfolge, die aus Zeichen besteht, die nicht im angegebenen Zeichensatz enthalten sind, wird durch bestimmt strcspn()-Funktion . In diesem Fall ist die Nullzeichen '0' wird verwendet, um das Zeilenumbruchzeichen nach der Angabe zu ersetzen 'N' als Zeichensatz, nach dem gesucht werden soll.

Abschluss:

Abschließend lesen Eingabezeichenfolgen aus Dateistreams oder Standardeingaben mit C fgets()-Methode ist zuverlässig und sicher. Es ist ein nützliches Tool für die geregelte Verarbeitung von Benutzereingaben, da es die Auswahl einer maximalen Größe für die Eingabe ermöglicht und Zeilenumbrüche verarbeitet.

Das veraltete gets()-Funktion wird durch das sicherere ersetzt fgets()-Funktion , das Sicherheitslücken behebt, die durch verursacht werden Pufferüberläufe . Dadurch wird sichergestellt, dass die Eingabezeichenfolge nicht größer als zulässig wird, wodurch potenzielle Speicherbeschädigungsprobleme vermieden werden.

Der bereitgestellte Beispielcode zeigt die Verwendung fgets() korrekt, um Benutzereingaben zu erfassen und das Zeilenumbruchzeichen zu entfernen, falls es erscheint. Es wird betont, wie wichtig es ist, Eingabebeschränkungen zu berücksichtigen und mit Zeilenumbrüchen umzugehen, um eine genaue Zeichenfolgenverarbeitung sicherzustellen.

Java-Namenskonventionen

Entwickler können damit die Sicherheit und Robustheit ihrer C-Programme verbessern fgets() . Sie können unerwartetes Verhalten und potenzielle Sicherheitsverletzungen durch große Eingaben vermeiden, indem Sie eine maximale Größe für Eingaben festlegen.

Angehende C-Programmierer sollten sich damit vertraut machen fgets() und seine Gebrauchsanweisungen, um eine sichere und effektive Eingabeverarbeitung zu gewährleisten. Entwickler, die sich dieser Funktion bewusst sind, können zuverlässigere und sicherere Software entwickeln, die vor häufig auftretenden eingabebezogenen Schwachstellen schützt.