logo

fgets() und gets() in C-Sprache

Zum Lesen eines String-Werts mit Leerzeichen können wir in der Programmiersprache C entweder gets() oder fgets() verwenden. Hier werden wir sehen, was der Unterschied zwischen gets() und fgets() ist.

fgets()

Die Funktion fgets() liest eine Zeile aus dem angegebenen Stream und speichert sie in der Zeichenfolge, auf die str zeigt. Es stoppt, wenn entweder (n-1) Zeichen gelesen werden, das Zeilenumbruchzeichen gelesen wird oder das Dateiende erreicht wird, je nachdem, was zuerst eintritt.



Syntax

char * fgets  (char * str , int n , FILE * stream );>

Parameter

    str: Zeiger auf ein Array von Zeichen, in das die gelesene Zeichenfolge kopiert wird. n: Maximale Anzahl von Zeichen, die in str kopiert werden sollen (einschließlich des abschließenden Nullzeichens). *stream: Zeiger auf ein FILE-Objekt, das einen Eingabestream identifiziert.

Hinweis: stdin kann als Argument zum Lesen aus der Standardeingabe verwendet werden.

Rückgabewert

  • Die Funktion fgets() gibt einen Zeiger auf die Zeichenfolge zurück, in der die Eingabe gespeichert ist.

Funktionen von fgets()

  • Es folgen einige Parameter wie maximale Länge, Puffer und Eingabegerätereferenz.
  • Es ist sicher zu verwenden, da es die Array-Grenze überprüft.
  • Es liest weiter, bis ein neues Zeilenzeichen gefunden wird oder die maximale Grenze des Zeichenarrays erreicht ist.

Beispiel für fgets()

Nehmen wir an, die maximale Anzahl von Zeichen beträgt 15 und die Eingabelänge ist größer als 15, aber trotzdem liest fgets() nur 15 Zeichen und gibt sie aus.

C








Normalisierung in der Datenbank
// C program to illustrate fgets()> #include> #define MAX 15> int> main()> {> >// defining buffer> >char> buf[MAX];> >// using fgets to take input from stdin> >fgets>(buf, MAX, stdin);> >printf>(>'string is: %s '>, buf);> >return> 0;> }>

>

>

Da fgets() Eingaben vom Benutzer liest, müssen wir zur Laufzeit Eingaben bereitstellen.

Konvertieren Sie eine Zeichenfolge in ein Datum
 Input: Hello and welcome to techcodeview.com Output: string is: Hello and welc>

bekommt()

Liest Zeichen aus der Standardeingabe (stdin) und speichert sie als C-String in str, bis ein Zeilenumbruchzeichen oder das Dateiende erreicht ist.

  • Die Verwendung ist nicht sicher, da die Array-Grenze nicht überprüft wird.
  • Es wird verwendet, um Zeichenfolgen vom Benutzer zu lesen, bis kein Zeilenumbruchzeichen mehr auftritt.

Syntax

char * gets ( char * str  );>

Parameter

    str: Zeiger auf einen Speicherblock (Array von char), in den der gelesene String als C-String kopiert wird.

Rückgabewert

  • Die Funktion gibt einen Zeiger auf die Zeichenfolge zurück, in der die Eingabe gespeichert ist.

Beispiel für gets()

Angenommen, wir haben ein Zeichenarray mit 15 Zeichen und die Eingabe ist größer als 15 Zeichen. gets() liest alle diese Zeichen und speichert sie in einer Variablen. Da gets() die maximale Grenze der Eingabezeichen nicht überprüft, kann der Compiler jederzeit einen Pufferüberlauffehler zurückgeben.

C++




// C program to illustrate> // gets()> #include> #define MAX 15> int> main()> {> >// defining buffer> >char> buf[MAX];> >printf>(>'Enter a string: '>);> >// using gets to take string from stdin> >gets>(buf);> >printf>(>'string is: %s '>, buf);> >return> 0;> }>

Konverter-String bis heute

>

>

Da gets() Eingaben vom Benutzer liest, müssen wir zur Laufzeit Eingaben bereitstellen.

 Input : Hello and welcome to techcodeview.com Output : Hello and welcome to techcodeview.com>

Abschluss

Sowohl die Funktionen fgets() als auch gets() können zum Lesen von Zeichenfolgeneingaben aus der Standardeingabe verwendet werden. Der Hauptunterschied zwischen der Funktion fgets() und der Funktion gets() besteht darin, dass die Funktion fgets() es dem Benutzer ermöglicht, die maximale Anzahl der zu lesenden Zeichen anzugeben, und wir können den Eingabestream in fgets() auch in eine beliebige Datei ändern.