#include <stdio.h>
#include <string.h>
char szavak[100][100];
char tartalom[1024][100];
char elvalaszto[1024];
int tartmeret,szavakmeret; // Összes szónak a száma. Könyebb vizsgálat érdekében.
/**********************************************************
A szavak.txt-ből beolvassa az összes szót, ezeket a
szavakat kell majd a tartalom-ból kiszedni.
**********************************************************/
int szavakbe()
{
FILE *cenzurafile;
int i=0;
cenzurafile=fopen("szavak.txt","rt");
if (cenzurafile==NULL)
{
printf("Nem sikerult a szavakat tartalmazo file-t megnyitni!");
} else while (!feof(cenzurafile)) fscanf(cenzurafile, "%s", szavak[i++]);
szavakmeret=i;
fclose(cenzurafile);
}
/**********************************************************
Az argumentumként megadott file-ból minden szót külön
olvas be és az elválasztó karaktereket külön menti el.
**********************************************************/
int fajlbeolvasas(char * filenev)
{
FILE *szovegfile;
int i=0,j=0;
char c;
szovegfile=fopen(filenev,"rt");
while(c!=EOF){ //Fájl tartalmának beolvasása tömbbe fájlvégig.
c=fgetc(szovegfile);
if ( c=='\n' or c=='\0' or c==' ' or c=='\t' or c=='.' or c==',' or c=='!' or c=='?' or c==':' )
{
j=-1;
elvalaszto[i]=c;
i++;
}
else {
if(c!='˙') tartalom[i][j]=c; // Kóbor karakter kiszűrése!
}
j++;
}
tartmeret=i+1;
fclose(szovegfile);
}
int javit()
{
int i=0,j=0,k=0;
for(i=0;i<szavakmeret;i++)
{
for(j=0;j<tartmeret;j++)
{
if(strcasecmp(tartalom[j],szavak[i])==0)
{
tartalom[j][0]='*';
tartalom[j][1]='*';
tartalom[j][2]='c';
tartalom[j][3]='e';
tartalom[j][4]='n';
tartalom[j][5]='z';
tartalom[j][6]='u';
tartalom[j][7]='r';
tartalom[j][8]='a';
tartalom[j][9]='z';
tartalom[j][10]='v';
tartalom[j][11]='a';
tartalom[j][12]='*';
tartalom[j][13]='*';
/*k=0;
while(tartalom[j][k] !='\0')
{
tartalom[j][k]='*';
printf("Cenzurazando! \n");
k++;
}
*/
}
}
}
}
/**********************************************************
Az egész szöveget kimenti az argumentumként megadott
kimeneti fájlba. Ha a fájl létezik felülírja!
**********************************************************/
int kiment(char * filenev)
{
FILE *kimeneti=fopen(filenev,"wt");
int i=0,j=0;
fputc('\t',kimeneti); // Első sorba tabulátor betétele
for(i=0;i<tartmeret;i++)
{
fprintf(kimeneti,"%s",tartalom[i]);
fputc(elvalaszto[i],kimeneti);
if (elvalaszto[i] == '\n') // Vizsgálja ha a sor végére értünk utána berak egy tabulátort..
{
fputc('\t',kimeneti);
}
}
fclose(kimeneti);
}
int main(int argc, char *argv[])
{
int i;
if (argc<2)
{
printf("Nem megfelelo argumentum hasznalat! Helyes hasznalat:\n");
printf("cenzura befile.txt kifile.txt\n");
return 0;
}
szavakbe();
fajlbeolvasas(argv[1]);
javit();
kiment(argv[2]);
printf("A program futása sikeres volt. A kimeneti fájl neve: %s",argv[2]);
return 0;
}