Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: howaboutno en 28 Octubre 2012, 14:20 PM

Título: ayuda en C
Publicado por: howaboutno en 28 Octubre 2012, 14:20 PM
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;
   }

}
Título: Re: ayuda en C
Publicado por: rir3760 en 28 Octubre 2012, 17:23 PM
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
Título: Re: ayuda en C
Publicado por: howaboutno en 28 Octubre 2012, 17:39 PM
ah, claro!! gracias =)