Probleme mit Char-Array
-
Hallo,
ich habe ein Problem im Zusammenhang mit einem Array vom Typ Char, bei dem ich zur Ausführungszeit des Programms ein Segmentation Fault erhalte. Das Problem sieht wie folgt aus:
#include <stdlib.h> char test ( var1, var2 ) char var1[]; char var2[]; { char var3[] = { "efgh" }; var1[0] = 'q'; /* OK */ var2[0] = 'q'; /* Seg. Fault */ var3[0] = 'q'; /* OK */ return '0'; } main() { char var1[]={'a', 'b', 'c', 'd'}; test ( var1, "xyz\0" ); }
Wo genau liegt das Problem und worin besteht der Unterschied zwischen den Variablen 'var2' und 'var3'?
Anm.: Das Beispiel stammt aus einem älteren C-Programm, dass sich mit einem älteren GCC noch übersetzten ließ...
-
Helix79 schrieb:
Anm.: Das Beispiel stammt aus einem älteren C-Programm, dass sich mit einem älteren GCC noch übersetzten ließ...
Mach draus
char test (char var1[], char var2[]) { ... }
Dann ist es nicht mehr alt.
Helix79 schrieb:
Wo genau liegt das Problem und worin besteht der Unterschied zwischen den Variablen 'var2' und 'var3'?
char *var2 = "xyz\0"
(wozu das \0?) ist ein Zeiger auf einen literalen String, und dort darf man nicht hinschreiben, weil Gott es so will.