logo

fgets() funkcija C

C programmā programmēšana, vadīšana ievade un izvade aktivitātes ir būtiskas. Fgets() ir viena no daudzajām funkcijām, kas ir pieejamas ievade . Ar šīs spēcīgās funkcijas palīdzību izstrādātāji var droši un precīzi nolasīt informāciju no konkrētās straumes. Šajā rakstā mēs apskatīsim ins un outs no fgets() , ejot pāri tai sintakse, lietojumprogramma, parauga kods , un gaidītos rezultātus .

The fgets() funkcija , saīsinājums 'file get string' , bieži tiek izmantots, lai nolasītu virkni no faila straumes vai standarta ievade (stdin) . Tas nodrošina drošāku aizstājēju novecojušajam gets() funkcija , kas iepriekš tika izmantots, bet tagad rada bažas par drošību. Funkcija fgets() piedāvā līdzekli, lai ierobežotu nolasāmo rakstzīmju skaitu un efektīvi apstrādā jaunas rindiņas rakstzīmes.

Fgets() sintakse ir šāda:

 char *fgets(char *str, int size, FILE *stream); 

Parametri ir sadalīti šādi:

str: Tā ir atsauce uz rakstzīmju masīvu (virkni), kas tiks izmantota ievades saglabāšanai.

Izmērs: Kopējais rakstzīmju skaits (ieskaitot nulles rakstzīme '0' ), ko var izlasīt.

straume: Rādīšanas ierīce uz ievades faila straumi vai stdin ka fgets() lasīs no.

Lai labāk izprastu, kā darbojas fgets(), apskatīsim piemēru:

satur apakšvirkni java

Piemērs:

 #include int main() { char input[100]; printf('Enter a string: '); fgets(input, sizeof(input), stdin); printf('You entered: %s', input); return 0; } 

Izvade:

 Enter a string: Hello, World! You entered: Hello, World! Enter a string: This is a very long string that exceeds the limit of the input buffer. You entered: This is a very long string that exceeds the limit of the input buffer. If a user types an empty text by simply pressing the Enter key: Enter a string: You entered: 

Paskaidrojums:

Iepriekš minētajā piemērā mēs sākam, iekļaujot atbilstošo galvenes failu, 'stdio.h' . Pēc tam ievades virkne tiek definēta kā rakstzīmju masīva ievade ar izmēru 100.

Izmantojot printf() funkcija , programma lūdz lietotājam ievadīt virkni. Pēc tam, stdin tiek izmantots kā ievades straume , un fgets() tiek izmantots ar ievadi kā mērķa virkni, izmērs (ievade) , un maksimālais lasāmais izmērs. Pēc tam programma izmanto printf() lai izvadītu ievadīto virkni.

Fgets() funkcija var lasīt un saglabāt jaunās rindas rakstzīme 'n' ja tas parādās pirms maksimālā izmēra sasniegšanas. Tas ļauj noteikt, vai ievades rinda ir nolasīta pilnībā vai saīsināta vietas ierobežojumu dēļ.

Piemērs:

Izmantojot modificēto koda fragmentu, varat izmantot strcspn() metode uz dzēst uz jaunā rindiņa rakstzīme no ievades virknes:

 #include #include int main() { char input[100]; printf('Enter a string: '); fgets(input, sizeof(input), stdin); input[strcspn(input, '
')] = ''; // Remove the newline character printf('You entered: %s', input); return 0; } 

Izvade:

pasūtījuma koka šķērsošana
 Enter a string: Hello World You entered: Hello World 

Paskaidrojums:

Apakšvirknes garumu, ko veido rakstzīmes, kas nav piegādātajā rakstzīmju kopā, nosaka strcspn() funkcija . Šajā gadījumā, nulles rakstzīme '0' tiek izmantots, lai aizstātu jaunās rindas rakstzīmi pēc precizēšanas 'n' kā meklējamo rakstzīmju kopa.

android.process.acore turpina apstāties

Secinājums:

Nobeigumā lasot ievades virknes no failu straumēm vai standarta ievades, izmantojot C fgets() metode ir uzticams un drošs. Tas ir noderīgs rīks lietotāja ievades regulētai apstrādei, jo tas ļauj izvēlēties maksimālo ievades lielumu un apstrādā jaunas rindiņas rakstzīmes.

Novecojušais gets() funkcija tiek aizstāts ar drošāko fgets() funkcija , kas novērš drošības trūkumus, ko izraisa bufera pārpildes . Tas nodrošina, ka ievades virkne nekļūst lielāka par atļauto, izvairoties no iespējamām atmiņas bojājuma problēmām.

Sniegtais koda piemērs parāda, kā lietot fgets() pareizi, lai uztvertu lietotāja ievadi un noņemtu jaunrindas rakstzīmi, ja tā parādās. Tas uzsver, cik svarīgi ir ņemt vērā ievades ierobežojumus un izmantot jaunas rindiņas rakstzīmes, lai nodrošinātu precīzu virkņu apstrādi.

Izstrādātāji var uzlabot savu C programmu drošību un robustumu, izmantojot fgets() . Tie var izvairīties no neparedzētas uzvedības un iespējamiem drošības pārkāpumiem, ko izraisa liela ievade, nosakot maksimālo ievades lielumu.

Topošajiem C programmētājiem vajadzētu iepazīties ar fgets() un tā lietošanas instrukcijas, lai nodrošinātu drošu un efektīvu ievades apstrādi. Izstrādātāji, kas apzinās šo funkciju, var izveidot uzticamāku un drošāku programmatūru, kas aizsargā pret bieži sastopamām ar ievadi saistītām ievainojamībām.