Problem v prekladaci, nebo v programatorovi ?

Petr Konecny pekon na decibel.fi.muni.cz
Neděle Únor 7 18:22:08 CET 1999


>>>>> Michal Safranek writes:

 MS: Zdravim,
 MS: dnes jsem se pokousel neco patlat v Cecku a docela me prekvapilo, ze 
 MS: nasledujici kod nefunguje, ac je (imho) spravne:

 MS: #include <stdio.h>
 MS: char *fce(char *neco){
 MS: static char buff[100];
 MS: strncpy(buff,neco,100);
 MS: return buff;
 MS: }

 MS: void main(void){
 MS: printf("%s%s\n",fce("aaa"),fce("bbb"));
 MS: }

Podle definice jazyka C to ma vypsat bud retezec "aaaaaa\n" nebo
"bbbbbb\n". Neni definovano, ktery z nich to bude.

Funkce fce ma staticky definovany buffer do nehoz nakopiruje parametr
neco a pak vrati adresu tohoto bufferu. Poradi vyhodnoceni parametru
funkci neni definovano, takze se bud napred zavola fce("aaa") nebo
fce("bbb") a pak ta druha, obe volani vrati stejnou hodnotu tj.
fce("aaa")==fce("bbb").

Jedno reseni je pouzit typ C++ a typ String.
A nebo ten druhy kus kodu.

-- 
Petr Konecny  <pekon at fi.muni.cz>  http://www.fi.muni.cz/~pekon/  
PGP Key ID: 1024/FDD85DBD 
Key fingerprint = 8B 1A D4 39 50 20 A1 DB  AF 03 2A 53 9E 2D 9D 1B


Další informace o konferenci Linux