Sortowanie Quick Sort pliku tekstowego.

0

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?

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++;
	}

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