Porównywanie string'ów nie działa [C]

0

Witam,co jest z moją funkcją sortującą alfabetycznie wskaźniki do oryginalnej tablicy,tak aby potem móc wyświetlić wszystkie stringi w kolejności alfabetycznej bez konieczności zmiany oryginału? Prosze o pomoc bo już nie mam najmniejszego pojęcia o co chodzi...

 
void printIn_Ascii_Order(char (*tab)[300],int *num) //Pobieram wsk do tablicy stringów,oraz ilość elementów tablicy
{
    int i,j;
    char *temp[*num],*cpy;
    for(i=0;i<*num;i++) temp[i]=tab[i];
    for(i=0;i<*num-1;i++)
       
       for(j=1+i;j<*num;j++) if(strcmp(tab[i],tab[j])>0)
        {
printf("zmiana %d z %d\n ",i,j);
            cpy=temp[i];
            temp[i]=temp[j];
            temp[j]=cpy;

        }

    for(i=0;i<*num;i++) fputs(temp[i],stdout);

}
0

Zadasz jakieś konkretne pytanie czy mamy się domyślać jak ta funkcja działa?

Podpowiedź: w pętli wewnętrznej nie używaj "i", tylko j oraz j + 1.

0

Funkcjia pobiera wskaźnik do tablicy stringów oraz ich ilość.Każdy jeden string to ciąg znaków aż do znaku [enter].
Następnie tworzę sobie tablicę wskaźników,każdy jej element wskazuje na inny string.
Teraz,posługując się zmianą kolejności adresów w tablicy wskaźników chce uzyskać efekt aby przy późniejszym jej odczytywaniu zdania (na które wskazują poszczególne elementy tablicy) ułożyły się alfabetycznie.Używan do tego funkcji strcmp()

Moje pytanie,czemu nie segreguje alfabetycznie,tylko zmienia sobie wszystko jak chce.

0
  1. stringów (bez apostrofu)
  2. chcesz sortować tablicę temp, czy tab, bo porównujesz jedno, a podstawiasz inne, więc wyniki mogą być przypadkowe...

1 użytkowników online, w tym zalogowanych: 0, gości: 1