Autor
|
Tema: Duda programa principiante C (Leído 2,923 veces)
|
Adri124
Desconectado
Mensajes: 14
|
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
Mensajes: 495
|
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
Mensajes: 2.714
Nie Dam Sie
|
Utiliza fgets 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
Mensajes: 14
|
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
Mensajes: 495
|
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
Mensajes: 14
|
Ok de acuerdo, muchas gracias!!
|
|
|
En línea
|
|
|
|
|
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
|
5 Enero 2011, 22:11 pm
por leogtz
|
|
|
Duda de principiante
Programación C/C++
|
Sputnik_
|
3
|
2,427
|
28 Noviembre 2012, 16:23 pm
por Sputnik_
|
|
|
Duda de principiante, trampa en votos por usuario
Dudas Generales
|
yankiepr
|
4
|
2,565
|
8 Mayo 2014, 19:59 pm
por yankiepr
|
|
|
Ayuda con este programa Soy principiante en esto :c
Java
|
Victor666op
|
0
|
1,852
|
1 Noviembre 2015, 01:38 am
por Victor666op
|
|
|
Duda de principiante y personal
Dudas Generales
|
Atohk
|
2
|
2,543
|
17 Mayo 2017, 10:17 am
por Randomize
|
|