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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


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

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Duda programa principiante C
« en: 13 Junio 2010, 18:17 pm »

Hola, soy muy principiante en la programación, y he intentado hacer un programa que, leyendo la frase queintroduces por teclado, te indica el numero de veces que aparece la letra a, la letra b, y los espacios. Mi problema esque el programa ignora completamente las primeras letras (en el caso de poner "Mi perro es blanco", te devuelve laslecturas de " perro es blanco", dejando un espacio extra).

Para llevar a cabo el programa he usado el comando gets, y puede que radique ahí el fallo, pero no lo se...

Aquí está mi programa:

#include <stdio.h>
#include <string.h>


int main()
     {

     char micadena [50];
     char *p;

     int espacios = 0;
     int letraa = 0;
     int letrab = 0;


     printf ("Introduce tu frase: ");

     scanf("%s", micadena);

     p = gets (micadena);

     while (*p != '\0')

     {
         if (*p == 'a') letraa++;
         if (*p == 'b') letrab++;
         if (*p == ' ') espacios++;

         p++;
     }

     printf ("En tu cadena \'%s\' hay %d letras \'a\', %d letras \'b\', y %d espacios ", micadena, letraa, letrab, espacios);

     return 0;

     }

´
Muchas gracias de antemano, y perdón por las molestias, y mas si es una duda absurda ^^


En línea

-Ramc-


Desconectado Desconectado

Mensajes: 495



Ver Perfil
Re: Duda programa principiante C
« Respuesta #1 en: 13 Junio 2010, 19:50 pm »

Con el scanf lees "Mi" y después con el gets le caes encima leyendo el resto de lo que quedó en el buffer. Por eso te lee solo una parte de la cadena, el scanf lee hasta que encuentra el espacio.


En línea


Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Duda programa principiante C
« Respuesta #2 en: 13 Junio 2010, 19:56 pm »

Utiliza fgets

Código
  1. fgets(micadena,sizeof(micadena),stdin);
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Adri124

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Duda programa principiante C
« Respuesta #3 en: 13 Junio 2010, 20:03 pm »

Era una duda absurda, si señor jajaj gracias a los dos, de verdad, al final lo que hice simplemente fue suprimir el scanf porque solo recogia hasta el prime espacio y entraba en conflicto con el gets, pero no habia hecho esto antes porque pensaba que sin scanf no recogias nada y acababa el programa xDD

Un saludo!!
En línea

-Ramc-


Desconectado Desconectado

Mensajes: 495



Ver Perfil
Re: Duda programa principiante C
« Respuesta #4 en: 13 Junio 2010, 20:08 pm »

Igual, siempre es bueno que uses fgets como te indica Littlehorse, para no tener problemas después con el tamaño de los datos que quieres leer y eso.
Saludos.
En línea


Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
Adri124

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Duda programa principiante C
« Respuesta #5 en: 14 Junio 2010, 16:51 pm »

Ok de acuerdo, muchas gracias!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda de Super Principiante « 1 2 3 4 »
Programación C/C++
Allitnam2004 30 12,690 Último mensaje 5 Enero 2011, 22:11 pm
por leogtz
Duda de principiante
Programación C/C++
Sputnik_ 3 2,427 Último mensaje 28 Noviembre 2012, 16:23 pm
por Sputnik_
Duda de principiante, trampa en votos por usuario
Dudas Generales
yankiepr 4 2,565 Último mensaje 8 Mayo 2014, 19:59 pm
por yankiepr
Ayuda con este programa Soy principiante en esto :c
Java
Victor666op 0 1,852 Último mensaje 1 Noviembre 2015, 01:38 am
por Victor666op
Duda de principiante y personal
Dudas Generales
Atohk 2 2,543 Último mensaje 17 Mayo 2017, 10:17 am
por Randomize
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines