PDA

View Full Version : [c] problema per un menu...


$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!!!!!!

$te
09-09-2006, 03:07
nessuno sa aiutarmi?