logo

fgets() ir gets() C kalba

Norėdami nuskaityti eilutės reikšmę su tarpais, C programavimo kalba galime naudoti gets () arba fgets (). Čia pamatysime, kuo skiriasi gets () ir fgets ().

fgets ()

Fgets () nuskaito eilutę iš nurodyto srauto ir išsaugo ją eilutėje, kurią nurodo str. Jis sustoja, kai nuskaitomas bet kuris (n-1) simbolis, nuskaitomas naujos eilutės simbolis arba pasiekiama failo pabaiga, atsižvelgiant į tai, kas įvyksta anksčiau.



Sintaksė

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

Parametrai

    str: žymeklis į simbolių masyvą, kuriame nukopijuota eilutė. n: didžiausias į str nukopijuojamų simbolių skaičius (įskaitant baigiamąjį nulinį simbolį). *srautas: žymeklis į FILE objektą, kuris identifikuoja įvesties srautą.

Pastaba: stdin gali būti naudojamas kaip argumentas nuskaityti iš standartinės įvesties.

Grąžinimo vertė

  • Fgets() funkcija grąžina žymeklį į eilutę, kurioje saugoma įvestis.

fgets() savybės

  • Tai atitinka kai kuriuos parametrus, tokius kaip didžiausias ilgis, buferis ir įvesties įrenginio nuoroda.
  • tai yra saugus naudoti, nes tikrina susietą masyvą.
  • Jis skaitomas tol, kol aptinkamas naujas eilutės simbolis arba didžiausia simbolių masyvo riba.

fgets() pavyzdys

Tarkime, kad didžiausias simbolių skaičius yra 15, o įvesties ilgis yra didesnis nei 15, bet vis tiek fgets () nuskaitys tik 15 simbolių ir išspausdins.

C




eol python





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

dvejetainis medis vs bst
>

>

Kadangi fgets () skaito vartotojo įvestį, turime pateikti įvestį vykdymo metu.

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

gauna ()

Skaito simbolius iš standartinės įvesties (stdin) ir išsaugo juos kaip C eilutę į str, kol pasiekiamas naujos eilutės simbolis arba failo pabaiga.

  • Tai nesaugu naudoti, nes netikrina masyvo susietumo.
  • Jis naudojamas skaityti eilutes iš vartotojo, kol neatsiranda naujos eilutės simbolio.

Sintaksė

char * gets ( char * str  );>

Parametrai

    str: žymeklis į atminties bloką (char masyvą), kur nuskaityta eilutė nukopijuojama kaip C eilutė.

Grąžinimo vertė

  • Funkcija grąžina žymeklį į eilutę, kurioje saugoma įvestis.

Gets() pavyzdys

Tarkime, kad turime 15 simbolių masyvą, o įvestis yra didesnė nei 15 simbolių, gets() perskaitys visus šiuos simbolius ir išsaugos juos kintamajame. Kadangi gets() netikrina didžiausio įvesties simbolių limito, kompiliatorius bet kuriuo metu gali grąžinti buferio perpildymo klaidą.

C++


java palyginimo metodas



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

>

>

masyvo eilutė c

Kadangi gets () nuskaito vartotojo įvestį, turime pateikti įvestį vykdymo metu.

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

Išvada

Fgets() ir gets() funkcijos gali būti naudojamos nuskaityti eilutę iš standartinės įvesties. Pagrindinis skirtumas tarp funkcijos fgets () ir funkcijos gets () yra tas, kad fgets () funkcija leidžia vartotojui nurodyti didžiausią skaitomų simbolių skaičių, taip pat galime pakeisti įvesties srautą į bet kurį failą fgets ().