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