Am facut cum ai zis,dar nu stiu de ce nu face nici o modificare.
Si ar mai fi o problema daca ar merge.Am vazut pe exeplulul la functia strstr de pe c++ reference ca daca in locul cuvantului care tebuie inlocuit pun un cuvant mai mare strncpy imi inlocuieste si din alte cuvinte,sau daca e mai mic lasa litere in plus...
#include<cstdio>
#include<cstring>
using namespace std;
char caut[10][80],inloc[10][80],cuv[260];
int n;
int main(){
int i;
int l;
char * p;
FILE * pFile;
pFile=fopen("replace.in","r");
fscanf(pFile,"%d\n",&n);
for(i=1;i<=n;i++){
fgets(caut[i],80,pFile);
fgets(inloc[i],80,pFile);
}
fgets(cuv,255,pFile);
for(i=1;i<=n;i++){
p=strstr(cuv,caut[i]);
while(p!=NULL){
l=strlen(inloc[i]);
strncpy(p,inloc[i],l);
}
}
pFile=fopen("replace.out","w");
fprintf(pFile,"%s",cuv);
return 0;
}
Nu procedezi chiar corect.Ar trebui facut asa:
1.gasesc pozitia de inceput a cuvantului
2.copii sirul de dupa cuvantul respectiv intr-un alt sir de caractere
3.inlocuiesc cuvantul in primul sir
4.la finalul noului cuvant copii restul din sirul auxiliar
int i;
char *p;
for(i=1;i<=n;i++)
{
p=strstr(s,v1[i]);
while(p!=NULL)
{
strcpy(aux,p+strlen(v1[i]));
strncpy(p,v2[i],strlen(v2[i]));
strcpy(p+strlen(v2[i]),aux);
p=strstr(s,v1[i]);
}
}
unde v1[ i ] e cuvantul ce trebuie inlocuit,v2[ i ] e cuvantul care va fi pus in locul lui