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