logo

fgets() en get() in C-taal

Voor het lezen van een tekenreekswaarde met spaties kunnen we get() of fgets() gebruiken in de programmeertaal C. Hier zullen we zien wat het verschil is tussen get() en fgets().

fgets()

De fgets() leest een regel uit de opgegeven stream en slaat deze op in de string waarnaar str verwijst. Het stopt wanneer een van de (n-1) tekens wordt gelezen, het nieuweregelteken wordt gelezen of het einde van het bestand wordt bereikt, afhankelijk van wat zich het eerst voordoet.



Java-programmeerpatronen

Syntaxis

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

Parameters

    str: Wijzer naar een array van tekens waar de gelezen string wordt gekopieerd. n: Maximaal aantal tekens dat naar str moet worden gekopieerd (inclusief het afsluitende nulteken). *stream: aanwijzer naar een FILE-object dat een invoerstroom identificeert.

Let op: stdin kan worden gebruikt als argument om uit de standaardinvoer te lezen.

Winstwaarde

  • De functie fgets() retourneert een verwijzing naar de string waar de invoer is opgeslagen.

Kenmerken van fgets()

  • Het volgt enkele parameters zoals maximale lengte, buffer en referentie van het invoerapparaat.
  • Het is veilig te gebruiken omdat het de array-bound controleert.
  • Het blijft lezen totdat een nieuw regelteken wordt aangetroffen of de maximale limiet van de tekenarray bereikt is.

Voorbeeld van fgets()

Laten we zeggen dat het maximale aantal tekens 15 is en de invoerlengte groter is dan 15, maar toch zal fgets() slechts 15 tekens lezen en afdrukken.

C








Java-linkedlist

// 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;> }>

>

>

Omdat fgets() invoer van de gebruiker leest, moeten we tijdens runtime invoer leveren.

 Input: Hello and welcome to techcodeview.com Output: string is: Hello and welc>

krijgt()

Leest tekens uit de standaardinvoer (stdin) en slaat ze op als een C-tekenreeks in str totdat een nieuweregelteken of het einde van het bestand wordt bereikt.

  • Het is niet veilig om te gebruiken omdat het de array-bound niet controleert.
  • Het wordt gebruikt om tekenreeksen van de gebruiker te lezen totdat er geen nieuweregelteken meer wordt aangetroffen.

Syntaxis

char * gets ( char * str  );>

Parameters

    str: Wijzer naar een geheugenblok (array van char) waar de gelezen string wordt gekopieerd als een C-string.

Winstwaarde

  • De functie retourneert een verwijzing naar de tekenreeks waar invoer is opgeslagen.

Voorbeeld van get()

Stel dat we een karakterarray van 15 karakters hebben en de invoer groter is dan 15 karakters, dan zal get() al deze karakters lezen en opslaan in een variabele. Omdat get() de maximale limiet van invoertekens niet controleert, kan de compiler op elk moment een bufferoverloopfout retourneren.

C++


hoe groot is mijn beeldscherm



// 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;> }>

sorteer-java samenvoegen
>

>

Omdat get() invoer van de gebruiker leest, moeten we tijdens runtime invoer leveren.

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

Conclusie

Zowel de functies fgets() als get() kunnen worden gebruikt voor het lezen van tekenreeksinvoer uit standaardinvoer. Het belangrijkste verschil tussen de functie fgets() en de functie get() is dat de functie fgets() de gebruiker in staat stelt het maximale aantal te lezen tekens te specificeren en dat we ook de invoerstroom naar elk bestand in fgets() kunnen wijzigen.