Mam do napisania program który wczytuje plik tekstowy i na jego podstawie tworzy słownik, który można będzie sortować AZ, ZA, dodawać nowe wyrazy i usuwać istniejące a następnie zapisać wszystko do pliku tekstowego w postaci tabelki.
Natrafiłem na problem przy wczytywaniu wyrazów to bazy danych którą jest dynamiczna tablica wskaźników na dynamiczne 25-elementowe tablice znaków. Kod programu wygląda następująco
#include <stdio.h>
#include <conio.h>
#include <string.h>
int ileSlow(FILE*);
void wczytajDoSlownika(FILE*, char**);
int main()
{
//wprowadzenie nazwy pliku do odczytu
char name[25];
printf("Podaj nazwe pliku do wczytania: ");
scanf("%s", name);
FILE* plik;
plik = fopen(name, "rt");
//sprawdzenie czy plik zostal wczytany
if(plik == NULL)
{
printf("Operacja wczytanie pliku nie powiodla sie!");
getch();
return 0;
}
//sprawdzenie ile slow jest w tekscie
int rozmiar = ileSlow(plik);
printf ("Slow jest %d\n", rozmiar);
//stworzenie slownika
char** slownik = new char* [rozmiar];
for (int i=0; i<rozmiar; i++)
{
*(slownik+i) = new char[25];
}
//wypelnienie slownika
wczytajDoSlownika(plik, slownik);
//wypisanie wyrazow ze slownika
for(int i=0; i<rozmiar; i++)
printf ("%c", *(slownik+i));
//skasowanie slownika i zamkniecie strumienia
delete [] slownik;
fclose(plik);
getch();
return 0;
}
// funkcja zliczajaca wyrazy
int ileSlow(FILE* plik)
{
char tekst[1024]={0};
fgets(tekst, sizeof(tekst), plik);
int licznik=0;
int s=' ';
for(int i=0; i<=strlen(tekst); i++)
{
if(tekst[i+1]==s && tekst[i]!=s)
{
licznik++;
}
}
return licznik+1;
}
//funkcja wczytujaca wyrazy do slownika
void wczytajDoSlownika(FILE* plik, char** slownik)
{
char tekst[1024];
char wyraz[25];
int poz=0;
int j=0;
int licz=0;
fgets(tekst, sizeof(tekst), plik);
while(tekst[licz] != '\0')
{
if ((tekst[licz]>=65 && tekst[licz]<=90) || (tekst[licz]>=97 && tekst[licz]<=122))
{
wyraz[j]==tekst[licz];
j++;
}
else
{
if ((tekst[licz]==' ') || (tekst[licz]=='\0'))
{
strcpy(*(slownik+poz), wyraz);
for (int n=0; n<25; n++)
{
wyraz[n]=0;
}
j=0;
poz++;
}
else
continue;
}
licz++;
}
}
Funkcja wczytajDoSlownika wcale nie wczytuje wyrazów i tu jest mój problem. Nie mam żadnego pomysłu dlaczego tak się dzieje, wczoraj cały dzień siedziałem nad tym i nie mogę znaleźć rozwiązania.
Jeśli ktoś byłby w stanie mi pomóc, byłbym niezmiernie wdzięczny.
Pozdrawiam