Reemplazar una palabra por otra en una frase. C

ncx

Lanero Reconocido
10 Nov 2002
551
Buenas tardes, necesito ayuda con esto

se trata de cambiar un palabra con otra en una frase.

lo que tengo es esto:

#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>


main()
{
int opc=0,y,i=0;
char frase[256], *ap,*palabra2;
char *palabra;
char *aux;
char *temp;
printf("ingrese la Frase\n");
gets(frase);
printf("ingrese la palabra a cambiar\n");
gets(palabra);
printf("ingrese la palabra a ser cambiada\n");
gets(palabra2);
ap=strstr(frase,palabra);
puts(ap);
y=strlen(palabra2);
while(ap!=NULL){
strcpy(ap,palabra2);
ap=strstr(ap,palabra);
}
puts(frase);
system("PAUSE");
return 0;
}

creo que el error esta en strcpy(ap,palabra2); dentro del while, pero no he podido encontrar la forma de corregir eso. Por favor ayudenme con eso.
 
Código:
krawek@ellibano krawek $ cat basura.c
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>


main()
{
        int opc=0,y,i=0;
        char frase[256], *ap;
        char *palabra2;
        char *palabra;
        char *aux;
        char *temp;
        printf("ingrese la Frase\n");
        fgets(frase, sizeof(frase), stdin);
        printf("ingrese la palabra a cambiar\n");
        palabra = (char*)malloc(12);
        fgets(palabra, 10, stdin);
        printf("ingrese la palabra a ser cambiada\n");
        palabra2 = (char*)malloc(12);
        fgets(palabra2, 10, stdin);

        ap=strstr(frase,palabra);
        puts(ap);
        y=strlen(palabra2);
        while(ap!=NULL){
                strcpy(ap,palabra2);
                ap=strstr(ap,palabra);
        }
        puts(frase);
        /* basura
        system("PAUSE");
        */
        free(palabra);
        free(palabra2);
        return 0;
}
 
por cierto, no olvides quitar los caracteres de salto de linea que deja el fgets... sino no la encontraras nunca X ), algo te dejo para hacer...

algo mas, strstr(frase,palabra); retorna NULL si no la encuentra... verifica eso.
 

Los últimos temas