Hallo Michael! Am Donnerstag, 10. Oktober 2002 14:08 schrieb Michael Matz:
Irgendwie bin ich nicht sicher, ob du weisst, was du willst. Willst du ne Typkonvertierung, z.B. um Funktion mit als 'char *' deklarierten Argumenten, mit 'unsigned char *' Parametern aufzurufen? Dann willst du einen Typecast:
Das ist vielleicht nicht so ganz rübergekommen (OK, ich habe es ja nicht richtig hingeschrieben...): Genau dieser Typecast führt zu Müll! Wenn ich unsigned char* irgendwas = "Blablabla"; strcpy(zielString, (const char*)irgendwas); aufrufe steht da Müll! Beim Ausdrucken fällt das erst richtig auf: unsigned char* irgendwas = "Blabla"; printf("%s", irgendwas); // Funktioniert hier interessanterweise ohne & printf("%s", (char*)irgendwas); Ich kann's leider nicht reproduzieren, weil ich die Stelle im Code bereits geändert habe. Jedenfalls kommt bei einem Typecast eben nicht der richtige Inhalt raus... Was ich eben gemerkt habe ist, dass das SIGSEGV nicht an der Typkonvertierung liegt. Der Debugger sagte mir, dass der Fehler in der Zeile liegt, wo strcpy() aufgerufen wird. Ich fürchte aber, dass das Problem in der Klasse liegt, die strcpy aufruft. Sieht folgendermaßen aus: Klasse sm_schueler speichert die Daten einer Person (eines Schülers) und stellt Funktionen zu deren Manipulation bereit. Will ich jetzt ein Array von solchen Objekten erzeugen, kann es dann der Grund für dieses SIGSEGV sein, dass ich folgendes gemacht habe: sm_schueler *s[100]; // um 100 Elemente von sm_schueler zu initialisieren... dann der Aufruf: s[0]->setName("EinName"); Ist das so korrekt oder muss ich s[0] vorher noch initialisieren? Wenn ja, wie? Danke, Christian -- Higgeldy Piggeldy, Hamlet of Elsinore Ruffled the critics by Dropping this bomb: "Phooey on Freud and his Psychoanalysis -- Oedipus, Shmoedipus, I just love Mom."