Cześć. Otóż nie wiem jak przesortować alfabetycznie tekst składający się z dowolnej liczby wierszy i wyrazów w jednym wierszu. Jak mam wybrać piwot i porównywać ze sobą wyrazy z różnych wierszy?
0
1
Wczytujesz cały plik to tablicy i sortujesz, innego wyjścia nie ma, bo qsort wymaga swobodnego dostępu do danych. Z tego powodu jeśli plik ma być dość duży to lepiej użyć merge sort, chyba, że ma być to sortowanie on-line, to wtedy AFAIK zostaje insertion sort.
0
W ten sposób wczytałem tekst do tablicy, tylko nie mam pojęcia jak dostać się do poszczególych wyrazów tak aby użyć funkcji strcmp.
char bufor[MAX_LINE];
int len, i, l, a;
if (!(fd = fopen("tekst.txt", "r")))
{
error(2);
}
if (!(zapis = fopen("zapis.txt", "w+")))
{
error(2);
}
i = 0;
l = 0;
a = 0;
int dlugosctablicy = krok;
char **wiersz = (char **)malloc(100 * sizeof(char*));
while (fgets(bufor, MAX_LINE, fd))
{
if (i == dlugosctablicy)
{
dlugosctablicy += krok;
wiersz = (char**)realloc(wiersz, dlugosctablicy * sizeof(char *));
if (!wiersz) error(5);
}
len = strlen(bufor-1);
//bufor[len -1] = '\0';
char *napis = (char*)malloc(len + 1 * sizeof(char));
strcpy(napis, bufor);
wiersz[i] = napis;
l += ile_slow(wiersz[i]);
printf("%s", (wiersz[i]));
fprintf(zapis, "%s \n", (wiersz[i]));
i++;
}