logo

fgets() a get() v jazyku C

Na čítanie hodnoty reťazca s medzerami môžeme použiť get() alebo fgets() v programovacom jazyku C. Tu uvidíme, aký je rozdiel medzi get() a fgets().

fgets()

Funkcia fgets() načíta riadok zo zadaného prúdu a uloží ho do reťazca, na ktorý ukazuje reťazec str. Zastaví sa, keď sa načítajú (n-1) znaky, prečíta sa znak nového riadku alebo sa dosiahne koniec súboru, podľa toho, čo nastane skôr.



Syntax

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

Parametre

    str: Ukazovateľ na pole znakov, kde sa prečítaný reťazec skopíruje. n: Maximálny počet znakov, ktoré sa majú skopírovať do str (vrátane koncového nulového znaku). *stream: Ukazovateľ na objekt FILE, ktorý identifikuje vstupný tok.

Poznámka: stdin možno použiť ako argument na čítanie zo štandardného vstupu.

Návratová hodnota

  • Funkcia fgets() vracia ukazovateľ na reťazec, kde je uložený vstup.

Vlastnosti fgets()

  • Nasleduje niektoré parametre, ako je maximálna dĺžka, vyrovnávacia pamäť a referencia vstupného zariadenia.
  • to je bezpečné použiť, pretože kontroluje väzbu poľa.
  • Pokračuje v čítaní, kým nenájdete nový riadkový znak alebo maximálny limit poľa znakov.

Príklad funkcie fgets()

Povedzme, že maximálny počet znakov je 15 a dĺžka vstupu je väčšia ako 15, ale funkcia fgets() stále prečíta iba 15 znakov a vytlačí ho.

vypnite režim vývojára

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

>

>

Keďže fgets() číta vstup od používateľa, musíme vstup poskytnúť počas behu.

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

dostane()

Číta znaky zo štandardného vstupu (stdin) a ukladá ich ako reťazec C do str, kým sa nedosiahne znak nového riadku alebo koniec súboru.

  • Použitie nie je bezpečné, pretože nekontroluje viazanie poľa.
  • Používa sa na čítanie reťazcov od používateľa, kým sa nenájde znak nového riadku.

Syntax

char * gets ( char * str  );>

Parametre

    str: Ukazovateľ na blok pamäte (pole znakov), kde sa prečítaný reťazec skopíruje ako reťazec C.

Návratová hodnota

  • Funkcia vráti ukazovateľ na reťazec, kde je uložený vstup.

Príklad get()

Predpokladajme, že máme pole znakov 15 znakov a vstup je väčší ako 15 znakov, get() načíta všetky tieto znaky a uloží ich do premennej. Keďže get() nekontroluje maximálny limit vstupných znakov, kompilátor môže kedykoľvek vrátiť chybu pretečenia vyrovnávacej pamäte.

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

>

>

Keďže get() číta vstup od používateľa, musíme vstup poskytnúť počas behu.

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

Záver

Funkcie fgets() aj get() možno použiť na čítanie vstupu reťazca zo štandardného vstupu. Hlavný rozdiel medzi funkciou fgets() a funkciou gets() je v tom, že funkcia fgets() umožňuje užívateľovi určiť maximálny počet znakov na čítanie a tiež môžeme zmeniť vstupný tok na ľubovoľný súbor vo fgets().