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