Stránka 1 z 1
Problémy s přidáním int c do řetězce
Napsal: ned 12. pro 2010, 21:05
od alienhan
Zdravím,
už hodinu řeším problém s následujícím kódem:
Kód: Vybrat vše
char *string;
int c;
while((c = fgetc(f)) != '\n')
{...
...
...
//pridat c na konec string//
????
funkce má za úkol načítat řádek ze souboru a jakmile jsou splněné nějaké podmínky přidat načtený znak do řetězce. Jenže mě to nechce fungovat..
poradíte, prosím?
Re: Problémy s přidáním int c do řetězce
Napsal: ned 12. pro 2010, 23:38
od arxeiss
Proč mám takový dojem, že v C nejdou řetězce k sobě sčítat jako jsi to napsal, ale musí se použít funkce concat() ?
Někde jsem to četl, ale možná funguje i tvoje možnost, ale pak nevím kde máš chybu. C bereme ve škole, ale já raději C# takže se s Cčkem neženu individuálně dopředu...
Re: Problémy s přidáním int c do řetězce
Napsal: pon 13. pro 2010, 19:30
od Trek
Přesně tohle je ten důvod proč si myslím, že C by se nemělo učit pro začátečníky na školách, ale spíš Java nebo C# a principy objektovýho programování.
musí se použít itoa nebo něco podobnýho a pak strcat (mnemonická pomůcka je že to tam strkáš) nebo něco podobnýho za předpokladu, že se to do toho řetězce vejde (je alokovanej)
Re: Problémy s přidáním int c do řetězce
Napsal: pon 13. pro 2010, 21:35
od Maranov
Budeš muset ten string alokovat (nejlépe) dynamicky, pomocí malloc(počet znaků + 1), resp. realloc(string, počet znaků + 1). A až ho nebude potřeba tak free(string).
Znak můžeš přilepit strcat().
Druhá možnost je vytvořit jej jako char string[počet znaků + 1], ale pak máš omezenou délku na to staticky alokované maximum.
Ideální je přidat nějaké počítadlo a třeba každých 16 znaků zavolat realloc a prodloužit string o dalších 16 znaků.