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..

Kód: Vybrat vše

 string += (char)c;
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ů.