logo

fgets() a get() v jazyce C

Pro čtení řetězcové hodnoty s mezerami můžeme v programovacím jazyce C použít get() nebo fgets(). Zde uvidíme, jaký je rozdíl mezi get() a fgets().

fgets()

Funkce fgets() přečte řádek ze zadaného proudu a uloží jej do řetězce, na který ukazuje str. Zastaví se, když se přečte buď (n-1) znaků, přečte se znak nového řádku nebo se dosáhne konce souboru, podle toho, co nastane dříve.



Syntax

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

Parametry

    str: Ukazatel na pole znaků, kam se přečtený řetězec zkopíruje. n: Maximální počet znaků, které se mají zkopírovat do str (včetně ukončovacího znaku null). *stream: Ukazatel na objekt FILE, který identifikuje vstupní proud.

Poznámka: stdin lze použít jako argument pro čtení ze standardního vstupu.

Návratová hodnota

  • Funkce fgets() vrací ukazatel na řetězec, kde je uložen vstup.

Vlastnosti fgets()

  • Sleduje některé parametry, jako je maximální délka, vyrovnávací paměť a reference vstupního zařízení.
  • to je bezpečný použít, protože kontroluje vázané pole.
  • Pokračuje ve čtení, dokud nenarazí na nový znak řádku nebo na maximální limit pole znaků.

Příklad fgets()

Řekněme, že maximální počet znaků je 15 a délka vstupu je větší než 15, ale přesto fgets() přečte pouze 15 znaků a vytiskne jej.

základní pásmo vs širokopásmové připojení

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

>

a b c čísla

>

Protože fgets() čte vstup od uživatele, musíme vstup poskytnout během běhu.

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

dostane()

Čte znaky ze standardního vstupu (stdin) a ukládá je jako řetězec C do str, dokud není dosaženo znaku nového řádku nebo konce souboru.

  • Použití není bezpečné, protože nekontroluje vázané pole.
  • Používá se ke čtení řetězců od uživatele, dokud není nalezen znak nového řádku.

Syntax

char * gets ( char * str  );>

Parametry

    str: Ukazatel na blok paměti (pole znaků), kde je přečtený řetězec zkopírován jako řetězec C.

Návratová hodnota

  • Funkce vrací ukazatel na řetězec, kde je uložen vstup.

Příklad get()

Předpokládejme, že máme pole znaků o 15 znacích a vstup je větší než 15 znaků, get() přečte všechny tyto znaky a uloží je do proměnné. Protože get() nekontroluje maximální limit vstupních znaků, kompilátor může kdykoli vrátit chybu přetečení vyrovnávací paměti.

C++


Java je nulová



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

>

>

Protože get() čte vstup od uživatele, musíme vstup poskytnout během běhu.

jak upgradovat javu
 Input : Hello and welcome to techcodeview.com Output : Hello and welcome to techcodeview.com>

Závěr

Funkce fgets() i get() lze použít pro čtení vstupu řetězce ze standardního vstupu. Hlavní rozdíl mezi funkcí fgets() a funkcí get() je v tom, že funkce fgets() umožňuje uživateli zadat maximální počet znaků ke čtení a také můžeme změnit vstupní proud na libovolný soubor ve fgets().