Witam. Pisałem już prędzej posta i jest progress lekki w programie jednak nadal nie wiem czemu nie działa. Działanie programu ma polegać na tym by zamieniał on dane z jednego pliku na podstawie innego i wyświetlał je w konsoli (musi być pisane w języku C).
Jeden plik (slownik.txt) jest jakby słownikiem, a jego zawartość to:
"mama:mother,
tata:father,
babcia:grandma,
na:on,
ja:i,
ty:you,"
Drugi zaś jest plikiem którego tekst ma zostać podmieniony i wyświetlony. Jego zawartość:
"mama poszla z tata na zakupy"
Program końcowo na podstawie przykładów powinien wyświetlić:
"mother poszla z father on zakupy", a wyświetla
"mother poszla z tata na"
Poniżej kod programu. Już nie wiem, co jest nie tak.
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cstring>
#include <ctype.h>
int _tmain(int argc, _TCHAR* argv[])
{
FILE *fp,*slownik;
char liniatekstu[50];
if ((fp=fopen("test.txt","r"))==NULL)
{
printf ("Nie mogę otworzyć pliku test.txt do zapisu!\n");
}
if ((slownik=fopen("slownik.txt","r"))==NULL)
{
printf ("Nie mogę otworzyć pliku slownik.txt do zapisu!\n");
}
char **tab = (char**) malloc(100*sizeof(char*)); // tworzymy tablice na 10 napisow
int i;
for(i = 0; i < 100; i++)
{
tab[i] = (char*) malloc(10*sizeof(char)); // tworzymy napis 10 znakowy
tab[i][0] = 0; // czysci smieci
}
char *token;
int k = 0;
char c; // pobierana litera z pliku test.txt
char slowo[1000]; // utworzone w koncu slowo
int idx = 0; // index do slowa
while (fscanf(slownik,"%s",&liniatekstu) == 1)
{
k = 0;
token = strtok(liniatekstu," ,.:");
while(token != NULL)
{
// tab2[k] = token[0];
tab[k] = token;
//printf("%s\n", tab[k]);
token = strtok(NULL," ,.:");
k = k + 1;
}
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");
}
}
else
{
slowo[idx] = 0;
//printf("%s\n", slowo);
char* slowopolskie = tab[0];
char* slowoangielskie = tab[1];
if ( strcmp(slowo,slowopolskie) == 0)
{
printf("%s ",slowoangielskie);
}
else
{
printf("%s ",slowo);
}
idx = 0;
}
}
}
free (tab);
fclose(slownik);
fclose (fp);
getchar();
}