Witam, mam problem otóż mam plik.txt który będzie jakąś dynamiczną bazą nie wiadomo ile rekordów w tej bazie będą ciągi znaków nie dłuższe niż 100 znaków. Chce napisać taki skrypt który dynamicznie utworzy tablice stringów i posortuje je np buble sortem. Problem polega na tym ze jak najpierw zlicze ilość wierszy to następnie przy wczytywaniu z pliku podejrzewam ze wczytuje mi śmieci gdyż moja pelta dojedzie do końca pliku. Może bardziej widoczne będzie to na kodzie:
//wywołać np ./program baza.txt
#include <stdio.h>
int main(int argc, char *argv[])
{
FILE *plik;
char znak;
if((plik = fopen(*++argv, "r")) == NULL)
{
printf("nie mogę otworzyć pliku %s\n", *argv);
return 1;
}
//Zliczanie wierszy
int wiersz = 0;
while((znak = getc(plik)) != EOF)
{
if(znak == '\n')
++wiersz;
}
printf("Plik zawiera %d wiersze\n", wiersz+1); //do tego miejsca ładnie mi wszystko chodzi
//Wczytywanie
char tablica[wiersz+1][100];
int i=0;
while((znak = getc(plik)) != EOF) // podejrzewam ze tu jest błąd gdyż w poprzedniej pętli doszliśmy do końca pliku
{
fscanf(plik, "%s", tablica[i]); //Gdy tą peltę wrzucę nad zliczanie wierszy i sam zadeklaruje tablice to ładnie wczyta
++i;
}
//Wyświetlenie
for(i=0;i<wiersz+1;i++)
{
printf("%s\n",tablica[i]);
}
return 0;
}
Jak ten problem rozwiązać? Może istnieje jakiś fajny sposób na rezerwowanie tablicy?
Pozdrawiam