$te
08-09-2006, 11:02
mi é sorto un altro problema:
io ho un dato da inserire, pero voglio far si che se voglio tornare al menu principale, premendo ESC, questo torni indietro:
cosi ho fatto questo:
backmenu(ENTRATA *ent)
{
int ch1;
while (kbhit ())
getch();
if (kbhit () == 0)
{
ch1 = getch ();
switch (ch1)
{
case ESC:
ent->rit = 4;
break;
break;
}
}
}
questa funzione é inserita in questa parte di codice:
int inserisci_entrate (ENTRATA *ent)
{
float dato2;
int a = 0;
char motivo[60], dato[10], *p;
FILE *f2;
while(a != 1)
{
printf("SALDO: ");
backmenu(ent);
if(ent->rit == 4) break;
fgets(dato, sizeof(dato), stdin);
if ((f2 = fopen ("spese.doc", "a")) == NULL)
return 0; /* Errore */
printf("MOTIVO ENTRATA/USCITA: ");
backmenu(ent);
if(ent->rit == 4) break;
fgets(motivo, sizeof(motivo), stdin);
if ((p = strchr (motivo, '\n')) != NULL)
*p = '\0';
dato2 = atof (dato);
if(dato2 < 0)
{
ent->uscite = ent->uscite + dato2;
fprintf(f2,"\t\t%.2f ", dato2);
}
if(dato2 > 0)
{
ent->entrate = ent->entrate + dato2;
fprintf(f2,"%.2f ", dato2);
}
ent->attivo = ent->attivo +dato2;
fprintf(f2,"%s\n", motivo);
fclose(f2);
a++;
}
}
sono due i problemi: il primo é ke se nn premo ESC il primo carattere viene "sprecato" x quella funzione, quindi se digito ciao, vien fuori iao; il secondo problema é: se io digito una parola, poi pero la cancello, la funzione backmenu() é "superata" quindi nn attiva, come fare? grazie!!!!!!
io ho un dato da inserire, pero voglio far si che se voglio tornare al menu principale, premendo ESC, questo torni indietro:
cosi ho fatto questo:
backmenu(ENTRATA *ent)
{
int ch1;
while (kbhit ())
getch();
if (kbhit () == 0)
{
ch1 = getch ();
switch (ch1)
{
case ESC:
ent->rit = 4;
break;
break;
}
}
}
questa funzione é inserita in questa parte di codice:
int inserisci_entrate (ENTRATA *ent)
{
float dato2;
int a = 0;
char motivo[60], dato[10], *p;
FILE *f2;
while(a != 1)
{
printf("SALDO: ");
backmenu(ent);
if(ent->rit == 4) break;
fgets(dato, sizeof(dato), stdin);
if ((f2 = fopen ("spese.doc", "a")) == NULL)
return 0; /* Errore */
printf("MOTIVO ENTRATA/USCITA: ");
backmenu(ent);
if(ent->rit == 4) break;
fgets(motivo, sizeof(motivo), stdin);
if ((p = strchr (motivo, '\n')) != NULL)
*p = '\0';
dato2 = atof (dato);
if(dato2 < 0)
{
ent->uscite = ent->uscite + dato2;
fprintf(f2,"\t\t%.2f ", dato2);
}
if(dato2 > 0)
{
ent->entrate = ent->entrate + dato2;
fprintf(f2,"%.2f ", dato2);
}
ent->attivo = ent->attivo +dato2;
fprintf(f2,"%s\n", motivo);
fclose(f2);
a++;
}
}
sono due i problemi: il primo é ke se nn premo ESC il primo carattere viene "sprecato" x quella funzione, quindi se digito ciao, vien fuori iao; il secondo problema é: se io digito una parola, poi pero la cancello, la funzione backmenu() é "superata" quindi nn attiva, come fare? grazie!!!!!!