eine Integervariable in einer char-Kette speichern



  • Hallo!

    Ich schreibe gerade mein eingenes FS und möchte jetzt in eine Zeichenkette
    auch Zahlvariablen abspeichern.
    Das mache ich so:

    char *DataTable;
    strcpy(DataTable,"MainBoot"); //8 Bytes für den Dateinamen
    strcat(DataTable,(char *)1);  //4 Bytes für die Sektorennummer des Anfangs der Datei
    strcat(DataTable,(char *)36); //4 Bytes für die Sektorennummer des Endes der datei
    strcat(DataTable,(char *)14077);  //4 Bytes für die Dateigröße in Byte
                                      //20 Bytes pro eintrag
    if(WriteSector(0,1300,1,DataTable)==0)printf("Error in writing filesystem!");
    

    Leider kommt darauf eine Zugriffsverletzung-.-



  • Den Speicher musst du natürlich vorher reservieren.

    Und sowas ist Unsinn:

    (char *)14077
    


  • Och, ich hab da keine Ahnung...
    Ja, und wenn ich den Speicher vorher reserviere, wie soll ich nun meine Zahlen da reinbekommen?

    Ich kann nicht einfach die Zahlen nach ASCII umwandeln und dann speichern (was auch völliger mist wär), da ich die Zahlen in meinem OS verwenden muss.
    Ich könnte die Zahlen höchstens ins BCD-Format umwandeln, was pure speicherverschwendung wäre...

    So würde ich die Daten auch reinbekommen:

    sprintf(DataTable,"MainBoot%c%c%cFREE%c%c%c",2,36,14077,37,1299,1);
    

    Nur sind das dann nur 8-Bit Zahlen, ich brauche 16 Bit, also 2 Zeichen.



  • Du solltest sowiso nicht mit Strings arbeiten sondern mit Bytepuffern (ohne Null am Ende).

    dword sektor_start = 1;
    memcpy( p, ( byte *)&sektor_start, sizeof( unsigned long ) );
    

    Allerdings ist das alles andere als C++. In C++ gibt es bessere Lösungswege.

    grüße


Log in to reply