Hola, tengo el siguiente enunciado:
Construir una función que dada una frase y una palabra nos diga la posición de dicha palabra el la frase y sino devuelva un cero .
Lo que he hecho es el siguiente código pero no me funciona y no veo el fallo. me podeis ayudar? gracias
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int posicion(char*, char *);
int main(void)
{ char frase[80];
char palabra[8];
printf("Introduce una frase \n");
fflush(stdout);
fflush(stdin);
gets(frase);
printf("Introduce una palabra \n");
fflush(stdout);
fflush(stdin);
gets(frase);
printf("La posición es: %d",posicion(frase,palabra));
fflush(stdout);
return 0;
}
int posicion(char *frase, char *palabra)
{
int valor=0;
char *p;
p=strstr(frase,palabra);
if(p !=NULL)
{
valor=p-frase+1;
return valor;
}
else
{
return 0;
}
}
El problema se debe a que almacenas ambas cadenas en el array "frase":
printf("Introduce una frase \n");
fflush(stdout);
fflush(stdin);
gets(frase); /* <== */
printf("Introduce una palabra \n");
fflush(stdout);
fflush(stdin);
gets(frase); /* <== */
En la segunda llamada a "gets" deberías utilizar el array "palabra".
No necesitas de las llamadas a "fflush" (salvo la ultima) y hay que evitar el uso de la función "gets". Por favor lee el tema |Lo que no hay que hacer en C/C++. Nivel basico| (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html).
Un saludo
ah, claro!! gracias =)