logo

fgets() och gets() i C-språk

För att läsa ett strängvärde med mellanslag kan vi använda antingen gets() eller fgets() i programmeringsspråket C. Här kommer vi att se vad som är skillnaden mellan gets() och fgets().

array i java

fgets()

Fgets() läser en rad från den angivna strömmen och lagrar den i strängen som pekas på av str. Den stannar när antingen (n-1) tecken läses, nyradstecknet läses eller slutet av filen nås, beroende på vilket som kommer först.



Syntax

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

Parametrar

    str: Pekare till en array av tecken där den lästa strängen kopieras. n: Maximalt antal tecken som ska kopieras till str (inklusive det avslutande nolltecknet). *ström: Pekare till ett FILE-objekt som identifierar en ingångsström.

Obs: stdin kan användas som argument för att läsa från standardinmatningen.

Returvärde

  • Funktionen fgets() returnerar en pekare till strängen där inmatningen är lagrad.

Funktioner i fgets()

  • Den följer några parametrar som maximal längd, buffert och referens för ingångsenhet.
  • Det är säker att använda eftersom den kontrollerar arraybunden.
  • Den fortsätter att läsa tills ett nytt linjetecken påträffas eller maxgränsen för teckenuppsättningen.

Exempel på fgets()

Låt oss säga att det maximala antalet tecken är 15 och inmatningslängden är större än 15 men fortfarande läser fgets() endast 15 tecken och skriver ut det.

C








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

>

abstrakta metoder
>

Eftersom fgets() läser indata från användaren måste vi tillhandahålla input under körning.

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

får()

Läser tecken från standardinmatningen (stdin) och lagrar dem som en C-sträng i str tills ett nyradstecken eller slutet av filen nås.

  • Det är inte säkert att använda eftersom det inte kontrollerar arrayens gräns.
  • Den används för att läsa strängar från användaren tills ett nyradstecken inte påträffas.

Syntax

char * gets ( char * str  );>

Parametrar

    str: Pekare till ett minnesblock (array av char) där den lästa strängen kopieras som en C-sträng.

Returvärde

  • Funktionen returnerar en pekare till strängen där indata lagras.

Exempel på gets()

Anta att vi har en teckenuppsättning på 15 tecken och inmatningen är större än 15 tecken, kommer gets() att läsa alla dessa tecken och lagra dem i en variabel. Eftersom gets() inte kontrollerar den maximala gränsen för indatatecken, kan kompilatorn när som helst returnera buffertspillfel.

C++


ternär operatör java



frågeväljare
// 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;> }>

>

>

Eftersom gets() läser indata från användaren måste vi tillhandahålla input under körning.

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

Slutsats

Både fgets() och gets() funktioner kan användas för att läsa stränginmatning från standardinmatning. Huvudskillnaden mellan funktionen fgets() och funktionen gets() är att funktionen fgets() låter användaren ange det maximala antalet tecken som ska läsas och vi kan också ändra indataströmmen till valfri fil i fgets().