Problem v prekladaci, nebo v programatorovi ?
Honza Pazdziora
adelton na informatics.muni.cz
Neděle Únor 7 18:06:50 CET 1999
> dnes jsem se pokousel neco patlat v Cecku a docela me prekvapilo, ze
> nasledujici kod nefunguje, ac je (imho) spravne:
>
> #include <stdio.h>
> char *fce(char *neco){
> static char buff[100];
> strncpy(buff,neco,100);
> return buff;
> }
>
> void main(void){
> printf("%s%s\n",fce("aaa"),fce("bbb"));
> }
A co vlastne ocekavate, ze ten kod bude delat? Me se to chova naprosto
korektne: nejdriv se do toho bufferu nakopiruje aaa a vrati se pointer
na ten buffer. Pak se do toho bufferu nakopiruje bbb a vrati se ten
samy pointer. A pak se to preda printf a me to vytiskne bbbbbb, coz je
v poradku.
> Nedokazete mi nekdo poradit lepsi reseni nez:
> strcpy(zal1,fce("aaa");
> strcpy(zal2,fce("bbb");
> printf("%s%s\n",zal1,zal2);
No, pokud Vam jde jen o to, ze ta funkce ma udelat z retezce nejaky
jiny retezec, tak holt na kazdy takovy retezec si musite zaalokovat
misto a to bud v te funkci, nebo jeste pred volanim te funkce a te
funkci dat pointer na cilove misto.
Ale jak rikam, zalezi na tom, co chcete, aby ta vec delala.
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
I just got back from vacation and started to clean my mailbox -- sorry
if you had to wait for this email.
Další informace o konferenci Linux