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.
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().