W C za pomocą qsort() musze posortować alfabetycznie zmienna imie ktora jest w takiej strukturze i nie mam juz pomyslow...
typedef struct rec { char imie[20]; [...] }; [...] struct rec *p; p=(struct rec *) malloc (n*sizeof(struct rec));
#include <stdio.h> #include <stdlib.h> #include <string.h> int cmpfunc( const void *a, const void *b) { return *(char*)a - *(char*)b; } void AlphabetSoup( char str[] ) { qsort(str, (size_t) strlen(str), (size_t) sizeof(char), cmpfunc); printf("%s\n", str); } int main() { char str1[] = "bcead"; AlphabetSoup(str1); return 0; }
prownywanie pierwszej liczby, wypluwa jakies randomowe miejsca w pamieci void sortuj(struct rec *p,int n,int ha,int el) { int i; p=ha; int stcm (char *napis, char *napis1) { if (napis[0]>napis[1]){return -1;} else return 1; } qsort(p->nazwisko,n,sizeof(p->nazwisko),stcm); }
Postanowiłem się nad tobą zlitować i przygotowałem działający przykład
#include <stdio.h> #include <stdlib.h> #include <string.h> struct test { char imie[20]; int wiek; }; void test_init(struct test *t, const char* imie, int wiek) { strncpy(t->imie, imie, sizeof(t->imie)); t->wiek = wiek; } int test_compare ( const void *_a, const void * _b) { const struct test *a = (const struct test*)_a; const struct test *b = (const struct test*)_b; return strcmp(a->imie, b->imie); } int main() { struct test *tab = malloc(sizeof(struct test)*5); test_init(&tab[0], "marek", 15); test_init(&tab[1], "ala", 13); test_init(&tab[2], "jurek", 20); test_init(&tab[3], "adam", 19); test_init(&tab[4], "zbyszek", 5); qsort(tab, 5, sizeof(struct test), test_compare); for (int i=0; i<5; i++) printf("%s (%d)\n", tab[i].imie, tab[i].wiek); return 0; }
93,382 zapytań
142,382 odpowiedzi
322,539 komentarzy
62,740 pasjonatów
Motyw:
Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡
Oto polecana książka warta uwagi.Pełną listę książek znajdziesz tutaj