Witam. Mam do napisania program, który na podstawie "słownika" z jednego pliku tekstowego zamieni zawartość drugiego. Fizycznie jej zamieniać nie musi, byleby ją wyświetlił dobrze w konsoli.
Np w pliku "słownik.txt" mam:
mama:mother,
tata,father,
babcia,grandmother
A w pliku "test.txt" mam:
mama poszla na zakupy z babcia i tata
Gdy odpale program to podmienia mi jedynie słowo "mama" na "mother" jednak słów "tata" i "babcia" nie zamienia. Program się nie wysypuje lecz zamienia tylko jakby pierwszy wyraz z pliku. Oto kod tej pętli.
while (!feof(slownik)) // dopóki nie natrafił na koniec pliku "slownik.txt"
{
k = 0;
fscanf(slownik,"%s",&liniatekstu); // pobierz linie tekstu z pliku "slownik.txt"
token = strtok(liniatekstu," ,.:");
while(token != NULL)
{
tab[k] = token; // podziel linie na 2 slowa i przypisz do tablicy
// printf("%s\n", tab[k]);
token = strtok(NULL," ,.:");
k = k + 1;
}
char c;
char slowo[1000];
int idx = 0;
while(! feof(fp))
{
c = fgetc(fp);
if( ! isspace(c) )
{ // znak niepusty - dodaj znak do słowa
slowo[idx++] = c;
if(idx>=1000)
{
printf("Błąd - slowo ma > 1000 znaków\n");
fclose(fp);
return -1;
}
}
else
{ // pusty znak - koniec słowa
if(idx == 0) // idx=0 znaczy że słowo jest puste
continue;
// tu mamy gotowe słowo
// - zakańczamy je 0-rem i coś z nim robimy (wydruk na ekran)
slowo[idx] = 0;
// printf("%s\n", slowo);
// TU MAM SLOWO POBRANE Z PLIKU "test.txt"
const char* x = tab[0]; // do iksa przypisuje slowo po polsku
const char* y = tab[1]; // do igreka przypisuje slowo po angielsku
if ( strcmp(slowo,x) == 0) // jezeli slowo polskie z pliku "slownik.txt" i slowo z "test.txt" są zgodne
{
printf("%s ",y); // wyswietl slowo angielskie z "slownik.txt"
}
else
{
printf("%s ",slowo); wyswietl slowo polskie z "test.txt"
}
idx = 0;
}
}
}
Ktoś, coś?