Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: sebi2020 am 20. December 2009, 14:29

Titel: Problem bei string zusammenfügung
Beitrag von: sebi2020 am 20. December 2009, 14:29
Ich versuche jetzt schon seit nem halben tag "0x" und irgend ne hexzahl zusammenzufügen... aber irgendwie ist der wurm drin? was mach ich den bloß für einen fehler? bräucht da mal dringend hilfe...
hab nen screenshot und den codeteil hier mit gepostet:

Code:
char* int2hex_ascii(int z)
{
    char buffer[] = "";
    static char buffer2[10] = "0x";
    if(z <= 0)
    {
        return "0x0";
    }
    else
   {
       char c;
       int length = 0;
       while(z) { c = z % 16; if (c > 9) { c += 7; } c += 48; z /= 16; buffer[length++] = c;}
       reverse_string(buffer);
       int i;
       for(i=0;i <= strlng(buffer); i++)
       {
    buffer2[i+2] = buffer[i];
       }
       return buffer2;
}
}

eigentlich sollte die ausgabe: 0x0 - 0x19 ausgeben... aber es kommt folgendes raus (das weiße und das undefined interrupt soll so sein.):
Und hier die Ausgabe, die ich nicht versteh. Für mich ist es unlogisch der es so aus gibt:
(http://www.informatikonline.net/images/extern/bugscreenshot.png)
Titel: Re: Problem bei string zusammenfügung
Beitrag von: XanClic am 20. December 2009, 14:32
Dein char buffer[] erzeugt vermutlich ein Array mit einem Byte Länge. Änder das mal lieber in buffer[10] oder sowas.
Titel: Re: Problem bei string zusammenfügung
Beitrag von: sebi2020 am 20. December 2009, 14:36
naja, mich irretieren diese \1 und \2 am anfang, ich weiß nicht woher die kommen... und die verdopplung der zeichen bei einstelligen zahalen... ich mein dass würde heißen dass als erstes zeichen in buffer immer \1 und danach \2 steht.
Titel: Re: Problem bei string zusammenfügung
Beitrag von: XanClic am 20. December 2009, 14:39
Hast du das mit dem Array jetzt mal ausprobiert?
Titel: Re: Problem bei string zusammenfügung
Beitrag von: MNemo am 20. December 2009, 15:19
Erstmal würde ich den String noch terminieren.
while(z) { c = z % 16; if (c > 9) { c += 7; } c += 48; z /= 16; buffer[length++] = c;}
/***/ buffer[length] = 0;  /***/
reverse_string(buffer);

Und wenn, das nicht reicht könnte der Fehler auch in reverse_string liegen.

Edit: Die Array-Grenzen solltest du natürlich trotzdem noch einbauen
Titel: Re: Problem bei string zusammenfügung
Beitrag von: sebi2020 am 22. December 2009, 17:54
joa, es warn nur die array grenzen -.-