#include <string.h> char *strstr(const char *s1, const char *s2);
Esta función encuentra la primera ocurrencia de la ristra s2 en la ristra s1.
Un puntero a la primera ocurrencia de s2 dentro de s1, o NULL si s2 no ha sido encontrado.
ANSI, POSIX
El procedimiento sustituyeRistra borra una subristra de una ristra y la sustituye por otra. La ristra que se va a modificar se pasa como primer parámetro, la subristra que se borra es el segundo parámetro y la subristra por la que se sustituye es el tercer parámetro.
#include <stdio.h> #include <stdlib.h> #include <string.h> void quitaLF(char *s){ int l=strlen(s); if(l > 0 && s[l-1]=='\n') s[l-1]='\0'; } void sustituyeRistra(char *amodificar, char *buscar, char *reemplazar){ char *encontrada; char resto[strlen(amodificar)+1]; encontrada=strstr(amodificar,buscar); if(encontrada!=NULL){ strcpy(resto,encontrada+strlen(buscar)); encontrada[0]='\0'; strcat(amodificar,reemplazar); strcat(amodificar,resto); } } int main (){ const int TAM=1024; char modificar[2*TAM], buscar[TAM], sustituir[TAM]; printf("Introduzca la ristra a modificar\n"); fgets(modificar,TAM,stdin); quitaLF(modificar); printf("Introduzca la ristra a buscar\n"); fgets(buscar,TAM,stdin); quitaLF(buscar); printf("Introduzca la ristra sustituta\n"); fgets(sustituir,TAM,stdin); quitaLF(sustituir); sustituyeRistra(modificar,buscar,sustituir); printf("Resultado\n%s\n",modificar); return 0; }