#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int string_cmp(const void *p, const void *q);
int main(int argc, char **argv)
{
int i; // variable
char **words_array = malloc(sizeof(char*)*(argc+1)); // sets new array to hold the words
char *p; // another char pointer array
p = *words_array; // set both equal to eachother
for(; *p < (argc - 1); p++) // for loop
{
p = malloc(strlen(*argv) + 1); // determines size based on user input
argv++; // increments
strcpy(p++, *argv); // copies words to the new array
}
p = NULL; // resets p
qsort(words_array, argc-1, sizeof(char *), string_cmp); // sorts the array
for(i = 0; i < argc - 1; i++){ // for loop to print properly
printf("%s ", words_array[i]);
}
printf("\n");
return 0;
}
int string_cmp (const void *p, const void *q) // compares the two different strings and returns a value
{
const char *value = *(const char**)p;
const char *value_two = *(const char**)q;
return strcmp(value, value_two);
}
Also mein Programm soll Kommandozeilenargumente übernehmen und sie sortiert mit Qsort zurückgeben. Beispiel wäre "./a.out hallo Dunkelheit mein alter Freund sollte als Dunkelheit Freund Hallo mein altes zurückgegeben werden. Ich bekomme keine Compilerfehler, aber stattdessen bekomme ich einen Segmentierungsfehler und ich bin mir nicht sicher, wie ich das beheben soll . meine Pointer-ArithmetikPointer Arithmetische Segmentierung Ausgabe
' p = * words_array; 'Wo ist malloc für' words_array'? – sjsam
Warum deklarieren Sie words_array als Zeiger auf einen Zeiger? – RamblinRose
@sjsam malloc ist genau dort, wenn ** words_array – EnglishStudent62