Hola
!!! Soy nuevo por este foro y tambien nuevo en esto de la programacion del C. Estoy aprendiendo este lenguaje con un curso que encontre en Internet y ahora que me surje un problemilla que no consigo resolver
preciso de vuestra ayuda!!! A ver, os comento, estoy haciendo un ejercicio del curso este que dice asi:
Un programa que sea capaz de almacenar los datos de 50 personas: nombre, dirección,
teléfono, edad (usando una tabla de structs). Deberá ir pidiendo los datos uno por uno,
hasta que un nombre se introduzca vacío (se pulse Intro sin teclear nada). Entonces
deberá aparecer un menú que permita:
1.- Mostrar la lista de todos los nombres.
2.- Mostrar las personas de una cierta edad.
3.- Mostrar las personas cuya inicial sea la que el usuario indique.
4.- Salir del programa
(lógicamente, este menú debe repetirse hasta que se escoja la opción de “salir”).
Pues me estaba saliendo todo bien y creia que lo tenia todo perfecto cuando lo compile y al probar la opcion 3 no consigo hacer que salgan los nombres cuya inicial sea la letra que el usuario indique. He estado probando y sale cuando escribo la letra detras de otras dos, es decir, escribo por ejemplo "dfa" y me salen los nombres que empiezan por a. No se por qué lee el tercer caracter y no el primero solo. Aqui os dejo el codigo entero a ver si me podeis aconsejar mas o menos la forma. He resaltado en negrita donde tengo el problema:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct {
char nombre[60], direccion[100];
int tlfno;
int edad;
}usuario[50];
char temp[11], letra;
int i, opcion, j, edad;
main()
{
for (i=0; i<50; i++)
{
printf("Escriba su nombre completo: ");
gets(usuario[i].nombre);
if (strcmp (usuario[i].nombre, "")==0) break;
printf("nEscriba su direccion: ");
gets(usuario[i].direccion);
printf("nEscriba su telefono: ");
gets(temp);
sscanf(temp, "%d", &usuario[i].tlfno);
printf("nEscriba su edad: ");
gets(temp);
sscanf(temp, "%d", &usuario[i].edad);
}
do
{
printf("nnnEscoja una opcion:n");
printf("1.-Mostrar la lista de todos los nombres.n");
printf("2.-Mostrar las personas de la edad que se indique.n");
printf("3.-Mostrar las personas cuyo nombre empiece con la letra que se indique.n");
printf("4.-Salir del programan");
scanf("%d", &opcion);
switch (opcion)
{
case 1:/*Muestra todos los nombres*/
for (j=0; j<=i; j++)
printf("%sn", usuario[j].nombre);
system("pause");
break;
case 2:/*Muestra las personas de una cierta edad*/
printf("nEscriba la edad que tienen las personas que quiere ver: ");
scanf("%d", &edad);
for (j=0; j<=i; j++)
if (usuario[j].edad==edad) printf("%sn", usuario[j].nombre);
system("pause");
break;
[b]case 3:/*Muestra las personas con la inicial que se indique*/[/b]
[b]printf("Escriba la inicial: ");[/b]
[b]scanf("%c", &letra);[/b]
[b]for (j=0; j<=i; j++)[/b]
[b] if (letra==usuario[j].nombre[0]) printf("n%s", usuario[j].nombre);[/b]
[b]system("pause");[/b]
[b]break;[/b]
case 4:/*Sale del programa*/
printf("Fin del programa, pulse Intro para cerrar");
getchar();
getchar();
break;
}
}
while (opcion!=4);
}
Espero que lo que he hecho no sea demasiada barbaridad
y que me podais guiar un poquito, no os pido que me lo resolvais, solo que me aconsejeis
Gracias!!!!