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.
    🙂


Anmelden zum Antworten