Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názory k článku
Taky vám přetéká?

Branislav Sott
Branislav Sott (neregistrovaný)
27. 6. 2002 0:28 Nový

Neskoro :)

celé vlákno

Preco musia vsetky dobre clanky o nejakom probleme vychadzat tyzden po tom ako na to pridem sam :)??????

Samozrejme tym neznizujem kvalitu clanku, fakt sa mi pacil.

stano
stano (neregistrovaný)
27. 6. 2002 8:58 Nový

super clanok

celé vlákno

naozaj velmi pekny clanok! clovek sa uci kazdym dnom a ja vol rad ked mam moznost sa nieco nove naucit

dakujem! a prajem vela zdaru do pisania takychto clankov

suchys
suchys (neregistrovaný)
27. 6. 2002 9:14 Nový

Zcasti je to veci "sanity" code

celé vlákno

Jo presna takhle to dopada, kdyz se nedodrzuji zakladni zasady psani :-). Vim to z vlastni zkusenosti, samotneho me tyhle veci parkrat vypekly.

Takhle neeee ;-)
char b[8];
memcpy(b, "BBBBBBBBBBBB", 12);

nebo radeji

char b[8];
memcpy(b, "BBBBBBBBBBBB", sizeof(b));

nebo mozna jeste lepe

#define BUF_SIZE 8
char b[BUF_SIZE + 1];
memcpy(b, "BBBBBBBBBBBB", BUF_SIZE);

Petr

Petr Maškarinec
Petr Maškarinec (neregistrovaný)
27. 6. 2002 11:18 Nový

Re: Zcasti je to veci "sanity" code

celé vlákno

...nebo nejlepe ;-)

char b[]="BBBBBBBBBBBB";

Petr

suchys
suchys (neregistrovaný)
27. 6. 2002 11:36 Nový

Re: Zcasti je to veci "sanity" code

celé vlákno

Vychazel jsem z toho, ze delka stringu BBBBB je neznama v dobe prekladu (coz sice neni z prikladu zretelne), tedy neco jako
void test(char *data){
.. kde data je kyzene "BBBBBB"

:-))
Petr

Cohen
Cohen (neregistrovaný)
27. 6. 2002 16:00 Nový

Re: Zcasti je to veci "sanity" code

celé vlákno

Ja bych rek, ze tohle nejni totez, pac dostanu pointer na retezec v pameti (ten retezec bude ale bezne ulozen v casti pameti pouze pro cteni, tudiz to nebude presne to, co sme asi chteli ;-)

gmmns
gmmns (neregistrovaný)
27. 6. 2002 17:16 Nový

Re: Zcasti je to veci "sanity" code

celé vlákno

Ja bych rekl, ze to dela presne to, co bysme chteli. Problem je ale samozrejme v tom, ze ten priklad s kopirovanim stringu pevne delky neni moc prakticky a na kopirovani retezcu bych asi tezko pouzil memcpy. Reseni jsou podle me tri:

1. Pouzit neco jako strncpy

2. Pouzivat strdup nebo neco podobneho

3. Vykaslat se na char * uplne a bud pouzit nejakou tridu v C++ nebo mam pocit, ze glibc obsahuje taky nejakou podporu pro "vyssi" retezce. Kdysi tady o takovych vecech vychazel serial.

Ma nekdo jeste jine reseni?

Matej
Matej (neregistrovaný)
28. 6. 2002 19:22 Nový

Re: Zcasti je to veci "sanity" code

celé vlákno

glibc? Skoro... Je to glib. Glib ma typ GString ale v praxi sa pouziva len zjednodusenie prace s retazcami, ktore casto menia obsah / dlzku.

gmmns
gmmns (neregistrovaný)
29. 6. 2002 12:35 Nový

Re: Zcasti je to veci "sanity" code

celé vlákno

Jo, sekl jsem se. ;-)

majkl
majkl (neregistrovaný)
1. 7. 2002 8:14 Nový

Re: Zcasti je to veci "sanity" code

celé vlákno

std::string

cervik
cervik (neregistrovaný)
28. 6. 2002 11:19 Nový

Re: Zcasti je to veci "sanity" code

celé vlákno

no s tim memcpy bych si takle nehral bejt tebou,
mas to jako retezec, toznamena ze ti musi koncit nulou
a tu tam nedavas
tedy by melo byt b[7] = '\0';
resp b [BUF_SIZE] = '\0';
jasne ze na retezce je lepsi pouzivat str fce (strcpy, strncpy),
akorat tusim ze to strncpy tam tu nulu na konec taky nedava
a zas mam pocit ze mem fce sou rychlejsi nez str fce

tomas szepe
tomas szepe (neregistrovaný)
5. 7. 2002 19:55 Nový

Re: Zcasti je to veci "sanity" code

celé vlákno

jenom o ten wrapper - memcpy() a str[n]cpy() jsou
prakticky ekvivalentni funkce, jenom memcpy "se
zastavi," kdyz narazi na '\0' nebo [v pripade
strncpy()] po okopirovani n znaku, a to tak, ze nejprve
ozkouma delku kopirovaneho retezce a potom zavola
memcpy(), takze primym volanim memcpy() cas neusetrite,
neb tu delku musite tak jako tak zjistit.

Vac
Vac (neregistrovaný)
27. 6. 2002 9:36 Nový

formatovani

celé vlákno

Copak o to clanek je to hezky.

Ale mohly se dat ukazky kodu resp. ilustrativni texty do <pre><code> resp. <pre><tt> mozna by pak vzrostla citelnost?

No jo, ja vim sem kafral. :)

VlK
VlK (neregistrovaný)
27. 6. 2002 15:18 Nový

Pekne...

celé vlákno

Vazne pekne. Vzdycky jsem vedel, ze to "tak nejak" funguje, ale nikdy jsem si nedal praci si to takhle otestovat.
Tesim se na dalsi pokracovani.

Petr R
Petr R (neregistrovaný)
29. 6. 2002 16:37 Nový

Super clanek...

celé vlákno

...jen tak dal.

Mirec
Mirec (neregistrovaný)
1. 7. 2002 10:23 Nový

fajn

celé vlákno

Suhlasim s ostatnymi...
Velmi pekny clanok!
Inak zaujimalo by ma, ci sa uz vacsina programov typu "demon" nepise v C++. Pri pouziti tried taketo problemy v znacnej miere odpadaju... Alebo je problemom
rychlost???

dufam, ze sa najde nejaky zasveteny, co ma pouci ;)

Tomas
Tomas (neregistrovaný)
2. 7. 2002 14:36 Nový

Rychle a jednoduche

celé vlákno

Je pravda, ze pokud na retezce pouzijete nejakou inteligentni tridu, je to neprustrelne, ale na druhe strane mnohem pomalejsi. Prece jenom - alokace libovolneho mista na zasobniku trva (mluvim ted opravdu pouze o alokaci) asi tak jednu strojovou instrukci: odecteni cisla od ukazatele zasobniku.
Vsechny inteligentni retezce pritom z principu museji pouzivat pametovou hromadu, coz v horsim pripade obnasi volani jadra - a uz jenom dispatch do jadra a zpet je alespon 100x vice strojovych instrukci.

Jeden muj kolega - pokud napr. sestavuje SQL dotazy, stale pouziva:

char sql_dotaz[200];
snprintf(sql_dotaz, sizeof(sql_dotaz), "SELECT %s FROM ...", szSelectovane_sloupce,...);

Vyhody: je to ta nejprenositelnejsi, nejsnaze citelna a (pokud nahradite snprintf nekolika strcpy() a strcat()) take vubec nejrychlejsi konstrukce, kterou muzete v programu pouzit - pokud ovsem mate nejak omezene delky retezcu, se kterymi pracujete.
Takze bych rekl, ze to neni jen o lenosti. Pokud se snazite psat multiplatformni kod, ktery bude rychly, jednoduchy a citelny, pak je to velmi elegantni reseni!

Samozrejme pracujete-li s retezci ve kterych muze byt 9-9999999 znaku, pak se dynamicke alokaci nevyhnete:-).

Ondra Nekola
Ondra Nekola (neregistrovaný)
4. 7. 2002 9:37 Nový

Re: Rychle a jednoduche

celé vlákno

Printf&spol. ale maji taky pomerne velky overhead. Tedy alespon v implementaci, kterou jsme si ukazovali ve skole.

tomas szepe
tomas szepe (neregistrovaný)
5. 7. 2002 19:59 Nový

Re: Rychle a jednoduche

celé vlákno

... nemluve o tom, ze valna vetsina system-level programatoru nemuze C++ pro jeho obludnost vystat.

Dobrou cestou pro psani daemonu a spol. je premyslet v C++ a psat plain C.

Ondrej Brablc
Ondrej Brablc (neregistrovaný)
6. 7. 2002 23:50 Nový

Re: Rychle a jednoduche

celé vlákno

snprintf neni moc prenositelne, nebo se mylim?

Miker
Miker (neregistrovaný)
1. 7. 2002 14:03 Nový

Esli vas to teda zaima,

celé vlákno

tak docela dobra prace na tohle tema je zde: http://www.enseirb.fr/~glaume/bof/report.html

Blizzard
Blizzard (neregistrovaný)
2. 7. 2002 20:23 Nový

Konecne a zarucene reseni problemu preteceni

celé vlákno

K certu s ceckem, napiste to v Ade B-) a mate po problemech ... krome problemu abyste to vubec v tom hroznym jazyce dokazali napsat :-)

Pro mene zkusene: Ada je jazyk navrzeny pro potreby letectva a NASA s durazem na bezpecnost tak velikym, ze neco jako tohle nepripada v uvahu (krome toho ale v tom kramu nejde ani temer nic jinyho, bezpecnyho a musi se cokoliv uzitecnyho importovat z cecka - takze vsechno je vlastne relativni)

Ondra Nekola
Ondra Nekola (neregistrovaný)
4. 7. 2002 9:41 Nový

Re: Konecne a zarucene reseni problemu preteceni

celé vlákno

A co haskell? Tam by se neco takoveho nemohlo stat. Typova bezpecnost, nemoznost takovychto preteceni, hezka 2D syntaxe. Co vic si muze clovek prat? ;)

Rompi
Rompi (neregistrovaný)
3. 7. 2002 8:50 Nový

Pouzijte radsi ten nejvic nejlepsi jazyk

celé vlákno

Uplne nejlepsi to bude napsat v Simule! (Komentar je urcen zejmena pro priznivce katedry kybernetiky na FAV ZCU v Plzni :-))))) )

Bill
Bill (neregistrovaný)
9. 7. 2002 12:31 Nový

Nejlepsi je..

celé vlákno

Nejlepsi je visual basic!

Zasílat nově přidané příspěvky e-mailem