Ayuda con funciones en C

Imagen de espeyaps
0 puntos

Hola!!!

He estado desarrollando una pequeña agenda en C pero hay un error que no se como resolver

El error es que el programa tiene un pequeño menú, se pide la opción, que es un entero pero al pedir una cadena que es, el programa ignora el fgets() (Usando stdin para el teclado) y el programa pìde el numero de telefono

Ya he intentado limpiar el buffer de teclado con fflush(stdin), pero no funciona.

He probado mi codigo en Windows y en este si funciona, pero lo necesito para sistemas Linux
Espero sus respuestas

Saludos!!!

Imagen de ubuntu111
+1
0
-1

Buenas espeyaps,

te podriamos ayudar mucho mejor si dejaras tu codigo en el post xD

aqui tienes una pagina que se dedica a la programacion para novatos y no tan novatos -> http://www.aprendeprogramacion.net/

+1
0
-1


Si eres programador, ya sea avanzado o novato, entra en http://www.aprendeprogramacion.net/ todo para empezar a programar.

Imagen de espeyaps
+1
0
-1

Codigo Fuente Agenda, apenas iba voy comenzando = )

//Puse las cabeceras para que se vean en la pagina
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
FILE *al, *an;
typedef struct{
char nombre[15], telefono[10];
}persona;
int agregar(persona wey)
{
al = fopen("data","a");
if(!al)
{
printf("Error!\n");
return 1;
}
fprintf(al,"%s%s",wey.nombre,wey.telefono);
fprintf(al,"---\n");
fclose(al);
return 0;
}
int main()
{
persona w;
int opc;
do
{
printf("1.- Agregar contacto\n2.- Salir\n\n");
printf("Opcion: ");
scanf("%d",&opc);
switch(opc){
case 1:
fflush(stdin);
printf("Nombre: ");
fgets(w.nombre,15,stdin);
fflush(stdin);
printf("Telefono: ");
fgets(w.telefono,15,stdin);
agregar(w);
}
}while(opc != 2);
return 0;
}

+1
0
-1
Imagen de zxk
+1
0
-1

puedes usar el clasico scanf
o gets, pero gets es algo peligroso pero bueno

+1
0
-1

zxk->k