elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ayuda en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda en C  (Leído 1,650 veces)
howaboutno

Desconectado Desconectado

Mensajes: 38


Ver Perfil
ayuda en C
« 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;
   }

}


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: ayuda en C
« Respuesta #1 en: 28 Octubre 2012, 17:23 pm »

El problema se debe a que almacenas ambas cadenas en el array "frase":
Código
  1. printf("Introduce una frase \n");
  2. fflush(stdout);
  3. fflush(stdin);
  4. gets(frase); /* <== */
  5. printf("Introduce una palabra \n");
  6. fflush(stdout);
  7. fflush(stdin);
  8. 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


En línea

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

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: ayuda en C
« Respuesta #2 en: 28 Octubre 2012, 17:39 pm »

ah, claro!! gracias =)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines