[gelöst] string-array als Parameter in Funktion funktioniert nicht richtig
-
Hallo c-community,
Habe ein Problem mit einem String-Array, welches ich an eine Funktion übergeben möchte. Folgende Situation habe ich derzeit:
eine Hilfsfunktion
char** malloc_StringArray(int argc, ...) { char *temp; char **tmpArray; tmpArray = malloc(argc * sizeof *tmpArray); va_list zeiger; va_start(zeiger, argc); int i; for (i = 0; i <= argc-1; i++) { temp = va_arg(zeiger, char*); tmpArray[i] = malloc(strlen(temp) * sizeof(char)); tmpArray[i] = temp; } return tmpArray; }
in der main-Funktion
char **StringArray; StringArray = malloc_StringArray(2, "--help", "-h"); // !bis hierhin funktioniert das Programm! InfoFunction(2, StringArray, argv[i], Help, Error_Unknown_Option);
die fehlerhafte Funktion
int InfoFunction(int argc, char **argvCompareRange, char *argsCompareValue, NextFuncPtr nextFuncPtr, NextErrFuncPtr errFuncPtr) { int verificateNextFunction; verificateNextFunction = -1; int i; for (i = 0; i <= argc - 1; i++) { printf("%s\n", argvCompareRange[i]); //erster Durchlauf ok, danach kommt Segmentation fault beim Ausführen der Datei (nicht beim Kompilieren if(strcmp(argsCompareValue, argvCompareRange[i]) == 0) { verificateNextFunction = 0; } } if (verificateNextFunction == 0) nextFuncPtr; else errFuncPtr; }
Ok ich weiß anscheinend funktioniert etwas nicht mit der Übrgabe meines String-Arrays. Ein Zugriff auf dieses vor der InfoFunction ist problemlos. In der InfoFunction aber nicht mehr. Wo habe ich meinen Denkfehler? Habe ich die Übergabe mit
char **argvComparerange
falsch gemacht?
mirrowwinger
-
Die Strings werden in malloc_StringArray nicht richtig verarbeitet.
tmpArray[i] = malloc((strlen(temp) +1) * sizeof(char)); // +1 für '\0' // tmpArray[i] = strcpy(temp; // Hier überschreibst du den Inhalt von tmpArray[i] strcpy(tmpArray[i],temp); // Strings werden in C kopiert
-
jupp hattest Recht
Vielen Dank
mirrowwinger