Also habe ich einen Code geschrieben, der Wörter in der richtigen Reihenfolge sortiert. Die Wörter werden über Zeiger gespeichert und ich habe ein anderes Char-Array im Programm initialisiert, um die char* argv
zu speichern.printf char array Segmentfehler C
Die letzte for-Schleife ist, was Segmentfehler druckt und ich kann nicht herausfinden, warum.
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[]) {
int i, j;
char *key;
char a[argc-1];
for(i=1; i < argc; i++){
a[i-1]= tolower(argv[i]);
}
for (i = 2; i < argc; i++) {
key = argv[i];
j = i-1;
while (j >= 1 && strcmp(argv[j], key) > 0) {
argv[j+1] = argv[j];
j--;
}
argv[j+1] = key;
}
for(i = 1; i < argc; i++){
a[i-1] = *argv[i];
}
for (i = 1; i < argc ; i++){
puts(argv[i]);
}
for(i = 0; i < argc-1; i++){
printf("%s", a[i]);
}
return 0;
}
Eingang
./a.out orange banana apple
Ausgang
apple
banana
orange
Segmentation fault
'tolower (argv [i])' sollte eine Warnung vom Compiler rasen, sonst ist es, weil Sie sie nicht aktiviert haben, ignorieren Sie sie überhaupt nicht! Warnungen sind sehr nützlich für Experten, sie müssen ein Werkzeug für Nicht-Experten sein. –
@iharob Ich habe diesen Teil kommentiert. Trotzdem bekomme ich immer noch Segmentfehler. –
Bitte lesen Sie meine Antwort ... Lassen Sie sich von den Kompilierungswarnungen leiten. Ich meine, versuche die Warnungen zu verstehen und folge daraus, wie die Dinge funktionieren. –