Uso el code blocks.
Y por qué el getchar() del primer código no lo sustituyes por un while(getchar() != 'n');?
probe de esta forma, me compila bien pero se me cuelga tambien cuando ingreso la segunda linea.
yo lo tengo asi en modulos diferentes:
typedef struct {
String fecha;
String comentario;
String cliente;
int precio;
}Maquillaje;
el "String" lo tengo hecho en otro modulo y es para que me lea he imprima las cadenas de texto, no creo que haga falta poner el codigo del String para que lo vean. El scan guarda y el print imprime.
void IngresoMaquillaje (Maquillaje &maqui)//carga un maquillaje en ingresos
{
printf ("Ingrese la fecha:");
fgets (maqui.fecha, sizeof (maqui.fecha), stdin);
while(getchar() != 'n');
printf ("nIngrese un comentario:");
fgets(maqui.comentario, sizeof(maqui.comentario), stdin);
printf ("nIngrese un cliente:");
fgets(maqui.cliente, sizeof(maqui.cliente), stdin);
printf ("nIngrese el precio:");
char line[80];
fgets(line, sizeof(line), stdin);
sscanf (line, "%d", &maqui.precio);
}
Asi fue de la unica manera que me funciono: pero he leido que no es recomendado su uso:
void IngresoDepilacion (Depilacion &depi)//carga un maquillaje en ingresos
{
printf ("Ingrese la fecha:");
scan (maqui.fecha);
getchar();
fflush (stdin);//sirve para limpiar el buffer del teclado y que no me quede el "enter" guardado
printf ("nIngrese un comentario:");
fflush (stdin);
scan (maqui.comentario);
printf ("nIngrese el nombre del cliente:");
fflush (stdin);
scan (maqui.cliente);
printf ("nIngrese el precio:");
fflush (stdin);
scanf ("%d", &maqui.precio);
}