Zamiana w tekscie

0

Witam. Mam do napisania program w języku C, który będzie zamieniał słowa w tekście zgodnie ze słownikiem w innym pliku.
Np w pliku: "slownik.txt" mamy:

mama:mother,
tata:father,
babcia:grandma

A w pliku "test.txt":

mama poszla z babcia na zakupy

A więc wynikowo powinno być mother poszla z grandma na zakupy, a to nie działa bo nic nie dopisuje ani nie zamienia w pliku test.txt. Oto kod:

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int _tmain(int argc, _TCHAR* argv[])
{
   FILE *fp,*slownik;
   char liniatekstu[20];
   
   if ((fp=fopen("test.txt","a"))==NULL)
   {
     printf ("Nie mogę otworzyć pliku test.txt do zapisu!\n");
   }

   if ((slownik=fopen("slownik.txt","r"))==NULL)
   {
     printf ("Nie mogę otworzyć pliku test.txt do zapisu!\n");
   }

   char **tab = (char**) malloc(2*sizeof(char*));   // tworzymy tablice na 10 napisow
	int i;
	for(i = 0; i < 2; i++)
	{
		tab[i] = (char*) malloc(2*sizeof(char));       // tworzymy napis 
		tab[i][0] = 0;     // czysci smieci
	}
   fscanf(slownik,"%s",&liniatekstu);
   char slowo[30];
   char *token;
   token = strtok(liniatekstu," ,.:");
   int k = 0;
   while(token != NULL)
   {
	 printf("%s\n", token);
	 tab[k] = token;
	 token = strtok(NULL," ,.:");
	 k = k + 1;
   }
   while(!feof(fp))
   {
	   fscanf(fp,"%s",&slowo);
	   printf("%s",slowo);
	   const char* x = tab[0];
	   const char* y = tab[1];
	   if ( strcmp(slowo,x)  == 0)
	   {
		   fputs(y,fp);
		   //fprintf(fp,"%s",y);
	   }	 
   }   
   fclose (fp);
   getchar();
}
0
char **tab = (char**) malloc(2*sizeof(char*));   // tworzymy tablice na 10 napisow

nie prawda, rezerwujesz pamiec na 2 elementy

tab[i] = (char*) malloc(2*sizeof(char));       // tworzymy napis 

nieprawda, tworzysz miejsce na 2 znaki

fscanf(slownik,"%s",&liniatekstu); 

przypadkowo zadziała, ale tylko przypadkowo

Między innymi dlatego nie działa (pomijam fakt, że pamięć nie jest zwalniana)

Pomijam fakt, że tu jest kilka fragmentow przypadkowo połączonych programów.... Taka metoda pozwoli tylko przypadkiem zadziałać...

0

No to takim razie jak to rozwiązać?

0

Nauczyć sie tego co było na zajęciach, zrozumieć, a później napisać raz jeszcze, już wtedy samodzielnie, ew z drobną pomocą...

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