Autor Thema: Problem bei string zusammenfügung  (Gelesen 5007 mal)

sebi2020

  • Beiträge: 130
    • Profil anzeigen
    • Infortus OS
Gespeichert
« 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:
Please press any-key...
Verflucht wo ist any-key? hier? ach Mist, das war Escape...

XanClic

  • Beiträge: 261
    • Profil anzeigen
    • github
Gespeichert
« Antwort #1 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.

sebi2020

  • Beiträge: 130
    • Profil anzeigen
    • Infortus OS
Gespeichert
« Antwort #2 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.
Please press any-key...
Verflucht wo ist any-key? hier? ach Mist, das war Escape...

XanClic

  • Beiträge: 261
    • Profil anzeigen
    • github
Gespeichert
« Antwort #3 am: 20. December 2009, 14:39 »
Hast du das mit dem Array jetzt mal ausprobiert?

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« Antwort #4 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
« Letzte Änderung: 20. December 2009, 15:21 von MNemo »
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

sebi2020

  • Beiträge: 130
    • Profil anzeigen
    • Infortus OS
Gespeichert
« Antwort #5 am: 22. December 2009, 17:54 »
joa, es warn nur die array grenzen -.-
Please press any-key...
Verflucht wo ist any-key? hier? ach Mist, das war Escape...

 

Einloggen