char* char test[]



  • Hallo,

    ich schreibe eine Struktur in eine Binärdatei, dabei soll ein Teil der geschrieben wird als Text geschrieben werden. Hierbei habe ich Verständnisprobleme oder noch nicht das nötige Wissen um folgendes Problem zu lösen:

    Pseudocode:

    struct testStruktur
    {
    word test1;
    int test2;

    char stext1[20];
    char* stext2;
    }

    sprintf(stext1,"%s","hallo test");
    stext2 = "hallo test";

    wenn ich das jetzt binär wegschreibe kann ich das stext1 in der Datei im Texteditor als Text lesen, das stext2 aber nicht.

    Wie kommt das?



  • Erstmal mußt du eine Variable von diesem Strukturtyp anlegen (und bei den Anweisungen auch angeben, auf welche struct du dich beziehst).

    Und zweitens: Kannst du das Problem etwas klarer formulieren? Wo kommt bei diesem (Pseudo)Programm ein Texteditor vor?



  • testStruktur atest;
    sprintf(atest.stext1,"%s","hallo test");
    atest.stext2 = "hallo test";

    wenn ich diese Struktur jetzt per stream binär in eine datei schreibe:

    ofstream OFile1;
    OFile1.open(eineDatei, ios::in |ios::binary);
    OFile1.write((char*) atest, sizeof(testStruktur));

    und diese datei dann in einem texteditor betrachte sehe ich

    atest.stext1 lesbar als Text
    aber
    atest.stext2 nicht lesbar als text sonder als kryptische zeichen dargestellt



  • stext2 ist ja auch nur ein Zeiger - in der Variable steht nur eine Adresse, an der das Programm den eigentlichen Text findet. Der Text selber steht außerhalb der struct irgendwo anders im Speicher und muß gesondert geschrieben werden.

    (stext1 ist ein char-Array und lebt in deinem Objekt)

    PS: Ein wenig Struktur könnte deinen Beiträgen nicht schaden

    PPS: fstreams gehören zu C++ (also eine Etage tiefer) - und in C++ überlädt man typischerweise op>> und op<<, um Objekte sauber lesen/schreiben zu können.



  • ja klar! bin ich dumm! danke!!!


Log in to reply