Fgets() nerozumiem tomu – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Fgets() nerozumiem tomu – C / C++ – Fórum – Programujte.comFgets() nerozumiem tomu – C / C++ – Fórum – Programujte.com

 

nord0
Návštěvník
17. 3. 2016   #1
-
0
-

Zdravim vsetkych. Casto vydavam v kode fgets() napr. fgets(buffer,256,stdin), ale nerozumiem co presne fgets robi, kedy je fgets vhodne pouzit. Pozrel som par stranok ale stale tomu nerozumiem. ten isty problem mam s getline. Napr. while(getline(cin, text)).  Vedel by mi to niekto jedoducho vysvetlit? 

Nahlásit jako SPAM
IP: 213.181.130.–
KIIV
~ Moderátor
+43
God of flame
17. 3. 2016   #2
-
+1
-
Zajímavé

Takove gets(buffer) bere jeden radek ze vstupu (obvykle klavesnice, ale jde do toho presmerovat temer cokoliv) - Nevyhoda je, ze buffer ma predem znamou velikost, a gets netusi, jakou. Tyhle fukce jsou vetsinou uz i nahlasene jako nebezpecne pri kompilaci.

Proto se pouziva fgets, kteremu se zadava i maximalni velikost retezce v bufferu. Je to funkce primarne urcena pro soubory (od toho ten prefix f), proto se tomu musi predhodit i ten stdin coz je standardni vstup (je totiz bran taktez jako "soubor", ikdyz v nem nejde skakat).

To plati pro C.

V C++ jsou uz mnohem lepsi moznosti, co se tyce nacitani libovolne dlouheho retezce - knihovna <string> a jeji varianta nacitani radku std::getline, ktera ocekava stream (tady je to std::cin, jakozto stdin) a std::string text; jakozto "neomezeny buffer" proste nacte cely radek. Jedno jak dlouhy. To uz je to nejbezpecnejsi a nemusi se resit veci jako to, ze se nacita radek na vickrat u fgets nebo ze to prepisuje pamet za bufferem jako u gets.

Nahlásit jako SPAM
IP: 94.113.92.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 98 hostů

Podobná vlákna

Co tomu říkáte — založil Alan

Fgets — založil Dusan

Funkcia fgets() — založil LuKeSkO

Vstup pomocí fgets — založil Zelenáč Uplný

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý