Guarda, questo codice cerca una serie di stringhe nel file aperto con fopen.
Le stringe da cercare sono in fillersC.
L'idea è che all'interno del ciclo while gestisci la riga del file (oneLine) ad ogni iterazione, e dentro la riga fai una semplice ricerca della parola con le funzioni di string.h (in particolare strstr()).
Una volta che hai trovato la parola in quella riga (strstr!=NULL) la elabori come vuoi.
Nel mio codice selezionavo la parte prima (head) e quella dopo (tail), e le ricopiavo in un nuovo file cambiando la parola in mezzo - in pratica sostituisco la parola cercata con un'altra.
codice:
int count;
char* fillersC[2]={"parola1", "parola2"};
const int nbytes = 180;
char *oneLine = malloc((nbytes+1)*sizeof(char));
FILE* texFileR = fopen("/tmp/file.txt","r");
while(getline(&oneLine, &nbytes, texFileR)!=-1){
found=0; // set to 1 only if some modifications are to be applied to the line
for(count=0; count<12; count++){
if(strstr(oneLine,fillersC[count])!=NULL){
if(!found) found=1;
address=strstr(oneLine,fillersC[count]);
index=address-&oneLine[0];
strncpy(head,&oneLine[0],index);
head[index]='\0';
len=strlen(oneLine)-strlen(fillersC[count])-index;
strncpy(tail,&oneLine[index+strlen(fillersC[count])],len);
tail[len]='\0';
switch(count){
case 0:
sprintf(newLine,"%s%s%s", head,altra_stringa,tail);
break;
case 1:
sprintf(newLine,"%s%s%s", head,altra_stringa2,tail);
break;
}
strcpy(oneLine,newLine);
}
} //end for
}