ayuda en C

Iniciado por howaboutno, 28 Octubre 2012, 14:20 PM

0 Miembros y 1 Visitante están viendo este tema.

howaboutno

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;
   }

}

rir3760

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|.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

howaboutno

ah, claro!! gracias =)