16. december 2004 - 14:05Der er
5 kommentarer og 1 løsning
problem med return af unsigned int og char *
Følgende kode skulle returnere teksten i s og indeholdet i tmp korrekt? unsigned int tmp; while(ch=s[idx++]) { tmp = writeChTest(ch); } s = "Test af write()\r\n" + tmp; return s; Det regnede jeg med, men hvorfor overskriver den "s" i stedet for kun at tilføje "tmp"
jeg ved godt at jeg overskriver se der men det er tmp der tilsyneladende overskriver teksten (altså det er "Test af write()\r\n" der bliver overskrevet)
Den kode du viser, laver pointerarimetik på strengen "Test af write()\r\n". Så vidt jeg kan se, må s være af typen char *, for at du får din kode oversat.
Og i så tilfælde vil koden : s = "Test af write()\r\n" + tmp; Ikke give det resultat du forventer - dette er ikke script sprog !
Hvad den gør, afhænger af værdien tmp
tmp = 0, resultat : s = "Test af write()\r\n" tmp = 4, resultat : s = " af write()\r\n" tmp = 8, resultat : s = "write()\r\n" tmp = 300, resultat : s = udefineret !!
Hvad du sikkert ønsker er noget i stil med :
static char s[80]; unsigned int tmp; while(ch=s[idx++]) { tmp = writeChTest(ch); } sprintf(s,"Test af write()\r\n%u\r\n", tmp ) return s;
Husk at erklære s static, eller på anden måde sikre at returværdien er defineret efter at funktionen returnerer.
det er det sikkert men jeg har fået af vide at writeChTest ikke kan bruges til noget da den er hardware specifik. du kan godt få pointene stormy for det er sikkert rigtigt det du har skrevet
jeg har det på samme måde. Men hvis du vil have point så smid et svar så får du halvdelen for det ville faktisk have hjulpet hvis jeg skulle bruge den kode.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.