Problem mit qsort
-
Guten Abend zusammen
Ich habe ein kleines Problem mit der qsort Funktion
bin ziemlicher Einsteiger beim Programmieren und gerade mit einer qsort-Funktion beschäftigt die Dateiinhalte sortieren soll nun tritt folgendes Problem auf:#include <stdio.h> #include <stdlib.h> #include <string.h> int sort_down(const void *p1, const void *p2) { return (strcmp(* (char * const *) p1, * (char * const *) p2) )* -1; } int sort_up(const void *p1, const void *p2) { return strcmp(* (char * const *) p1, * (char * const *) p2); } int main(int argc, char *argv[]) { int j; qsort(&argv[1], argc - 1, sizeof(char *), sort_up); //aufsteigend sortieren //qsort(&argv[1], argc - 1, sizeof(char *), sort_down); //absteigend for (j = 1; j < argc; j++) puts(argv[j]); exit(EXIT_SUCCESS); }
----------------
#include <stdio.h> #include <stdlib.h> #include <string.h> #define ANZ 5 static int sort(const void *p1, const void *p2) { return strcmp(* (char * const *) p1, * (char * const *) p2); } int main() { int i; char array[ANZ]; array[0] = 7; array[1] = 5; array[2] = 2; array[3] = 3; array[4] = 1; qsort(array, ANZ, sizeof(char *), sort); for (i = 0; i < ANZ; i++) printf("%c\n", array[i]); exit(EXIT_SUCCESS); }
-
Ich kann über Argumentzeile Zahlen und Buchstaben auf und absteigend sortieren (Code 1)
wieso funktioniert das nicht mit einem Array (Code 2) -
Wie sortier ich überhaupt eine Datei? Speicher ich den Dateiinhalt in ein Array das ich dann sortiere oder geht das auch einfacher?
bin für jeden Vorschlag dankbar
mfg Alex
-
-
strcmp vergleicht string, du sortierst aber keine string. Außerdem erwartet strcmp ein char* und du übergibst in ein char. Der Compiler sollte sich beschweren, zumindest warnen, wieso ignorierst du die Hilfeschreie des Compilers?
-
nene der Compiler reagiert nicht
einzig Segmention Fault beim Ausführen des Programms.Habs aber jetzt bereits hinbekommen
jetzt fehlt noch das mit der Datei, weil ich nicht weiß wie man einen Dateiinhalt sortieren kann mit qsort
-
AlexTJ schrieb:
nene der Compiler reagiert nicht
einzig Segmention Fault beim Ausführen des Programms.Habs aber jetzt bereits hinbekommen
jetzt fehlt noch das mit der Datei, weil ich nicht weiß wie man einen Dateiinhalt sortieren kann mit qsortkommt drauf an, was du sortieren willst: nach wörtern, sätzen usw.
-
Schreiben Sie ein Programm welches Nutzdaten (vom Benutzter bestimmten Datenformat) sortiert und die sortierten Daten in eine Zieldatei speichert.
-
ein bissli zu allGEMEIN formuliert, um konkret was draus zu machen. ansonsten ist deine idee schon ok: willst du wörter sortieren, speicherst du die wörter in einem array; willst du sätze sortieren, speicherst du die sätzt in einem array, usw.
-
ich hab de angabenstellung ja selbst nicht so 100%ig verstanden
aber anscheinend werden dateien erzeugt die nur aus 1 Datentyp bestehen z.B. float oda double und die gehören dann sortiert
sortierung für float und double schaff ich noch aber wie wend ich das dann auf ne Datei an
-
#define FLOAT_TYPE 0 #define DOUBLE_TYPE 1 #define WORD_TYPE 2 // Benutzereingabe char dateiname [512]; int type = Eingabe(dateiname); switch(type) { case FLOAT_TYPE: // Datei öffnen, Werte ins float array einlesen, sortieren, ... break; // ... case WORD_TYPE: // Datei öffnen, Wörter ins char array einlesen, Wörter sortieren, ... break; }
-
danke ich habs jetzt mit meiner oben geposteten variante (argc, argv) ohne kommandozeile gemacht also einfach 2d array hernehmen den dateiinhalt rein und des sortiert alles (wörter, buchstaben, fließkommas, integer)