Řazení stringů ve struktuře v C rubrika: Programování: C/C++
Ahoj, narazil jsem na problém, který nedokážu vyřešit. Načitám ze vstupu dvě data, číslo a libovolně dlouhý řetězec. Číslo načítám pomocí scanf, řetězec pomocí getline, která si alokuje pamět přímo pro ten string, jenom na poslední místo přidávám znak '\0', abych s tím daným řetězcem mohl následně pracovat. Data uchovávám v dynamický struktuře, která vypadá takto
typedef struct data { char *most = NULL; int pocet; } DATA;
Alokace na 2 místa, a podle potřeby zvětšuji vždy o dvojnásobek. Uvádím příklad vstupů
4 A 5 K 1 Z 3 X
Načítám takto
DATA *s; // poté klasicky malloc scanf( "%d", &s[k].pocet ); // kde k zvetšuji o 1 na konci cyklu len = getline(&s[k].most, &len, stdin ); // len je nastaveno ze začátku na 0, poté na len-1 dávám ten znak '\0'
Teď bych ideálně potřeboval pole struktur setřídit pomocí knihovního qsortu, abych, když zadám s[0].pocet, tak aby na 1. místě bylo největší číslo, když s[0].most, tak string k danému číslu, tzn:
5 K 4 A 3 X 1 Z
Díky za každou radu.
EDIT: Díky Nobody, řazení funguje, akorát teď nefunguje realloc. Nechci zakládat další téma, tak se zeptám zde. Níže uvedu ukazku, jak mám malloc a realloc
Tady realloc končí chybou, co v něm dělám špatně?
EDIT2:, tak jsem upravil podmínku na k>=i - 1 a vše funguje
Pro plný přístup na Devel.cz se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře