tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
321
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    t0xic t0xic ist offline Rookie
    Registriert seit
    Dec 2010
    Beiträge
    6
    Funktion:
    Das Programm soll das Array *namen[] alphabetisch sortieren, bevor ich das array *namen[] mit strcpy mit den strings des zweidimensionallen arrays aufgefüllt habe .

    hi, hier mal ein ausschnitt aus meinem programm ich weiß das 2 fehler enthalten sind
    einmal bei
    Code :
    1
    2
    
    for(a=0;a<*namezaehl;a++)
            strcpy(namen[a],(*liste)[0][a].name);
    (wobei zuweisen mit = funktioniert, wills aber mit strcpy machen) und einmal bei der
    Code :
    1
    
    qsort(namen,*namezaehl,sizeof(char),vergl);
    und der
    Code :
    1
    2
    3
    4
    
    int vergl(const void *name1, const void *name2)
    {
        return(strcmp(* (char*) name1, * (char*)name2));
    }
    funktion.

    Hier der komplette Code, ich habe schon alles mögliche probiert und in meinen C-Buch nichts passendes gefunden warum das nicht gehen könnte.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    void ausgabe_alle(int *namezaehl,struct listen (*liste)[3][100])
    {
        int i,a;
        char *namen[100];  
     
        for(a=0;a<*namezaehl;a++)
            strcpy(namen[a],(*liste)[0][a].name);
     
        qsort(namen,*namezaehl,sizeof(char),vergl);
     
        printf("\n....Gemischte Liste......\n");
     
        for(i=0;i<(*namezaehl);i++)
        {
            printf("%s\n",namen[i]);
        }
     
        printf(".....Listenende.....");
     
    }
     
    int vergl(const void *name1, const void *name2)
    {
        return(strcmp(* (char*) name1, * (char*)name2));
    }

    Wie gesagt es ist nur ein Ausschnitt die main und ein paar andere funktionen funktionieren.
     

  2. #2
    Trulleberg Trulleberg ist offline Mitglied Bronze
    Registriert seit
    Oct 2010
    Beiträge
    35
    Hier ist ziemlich viel falsch, du musst dir schon im Klaren sein, was du mit qsort denn sortieren willst.
    Dein sizeof(char) ist nicht die Elementgröße, deine Vergleichsfunktion arbeitet ebenso nicht auf Elementen des Typs, nach dem du sortieren willst.
     

  3. #3
    t0xic t0xic ist offline Rookie
    Registriert seit
    Dec 2010
    Beiträge
    6
    hab nun ein bisschen was verändert,

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    void ausgabe_alle(int *namezaehl,struct listen (*liste)[3][100])
    {
        int i,a;
        char *namen[100];  
     
        for(a=0;a<*namezaehl;a++)
            strcpy(namen[a],(*liste)[0][a].name);
     
        qsort(namen,*namezaehl,sizeof(char*),vergl);
     
        printf("\n....Gemischte Liste......\n");
     
        for(i=0;i<(*namezaehl);i++)
        {
            printf("%s\n",namen[i]);
        }
     
        printf(".....Listenende.....");
     
    }
     
    int vergl(const void *name1, const void *name2)
    {
        return strcmp(* (const char **) name1, * (const char **)name2);
    }
     

Ähnliche Themen

  1. strcpy
    Von reto-meier im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 15.04.09, 11:22
  2. OLEDB Insert Befehl für Excel wird als Falsch deklariert
    Von bierber im Forum .NET Datenverwaltung
    Antworten: 1
    Letzter Beitrag: 30.08.07, 18:54
  3. Hat qsort() in C Grenzen?
    Von mc_gulasch im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 13.06.06, 12:30
  4. Sortieren mit qsort, aber wie?
    Von aRR im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 15.05.04, 13:05
  5. qsort Problem
    Von daywalkertp im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 06.04.03, 22:11