|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 290
|
[C] menu
ciao a tutti! ho un probleme: devo creare un programma con il seguente menù (ve ne riporto solo una parte):
- I <Cognome_Nome> <Matricola> <Voto> per inserire i dati di uno studente. - C <Cognome_Nome> per cancellare i dati dello studente con - M per visualizzare i dati della media. - PC per stampare tutto il database, ordinato per Cognome. come posso fare?? io avevo pensato di fare: c=getchar(); switch(c){ case 'I': ... case 'PC':... } (scusate se ho commesso qualche errore nella sintassi dello switch, ma lo uso di rado, cmq era per farvi capire la mia idea) il problema (ho provato) che ad esempio non gli piace il case 'PC', perchè è di due lettere.. ho provato a sostituire char c con un vettore (ed a mettere scanf("%c",&c) al posto della getchar) ma non gli paice lo stesso.. come posso fare?? oltretutto dovrebbe prendere anche dei parametri (come Cognome_Nome> <Matricola>) dopo il comando, ma solo con alcuni comandi... sono proprio in tilt non so come farre... ah per le voci del menù , non voglio che siano parametri da passare al programma quando lo lancio, io lancio il programma poi mi deve accettare i vari comandi... grazie mille in anticipo a tutti!
__________________
_______________________________________________ AMD Athlon64 3500+, Cooler Master Hyper 6, Asus A8V Deluxe wifi-g Rev2.0, Corsair TwinX-1024 Pc3200XL Platinum, Western Digital Raptor 74GB, Cooler Master CoolDrive 4, Sapphire Radeon 9600XT 256MB, Sound Blaster Audigy Player, Cambridge Soundworks 4.0, Enermax Coolergiant EG485p/ax, Lg Flatron L1952S --- Acer Aspire 5024 ![]() Apple MacBook Pro 13" 2.53GHz |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Codice:
char buffer[200];
char *comando;
while (fgets (buffer, sizeof (buffer), stdin) != NULL)
{
if ((comando = strtok (buffer, " \n")) != NULL)
{
if (strcmp (comando, "I") == 0)
{
/* fai altre strtok per prendere i parametri */
}
else if ....
.... altri test ....
}
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 290
|
grazie mille...
solo una cosa: strtok di preciso cosa fa? mi scrive in "comando" tutto quello che c'è in buffer prima del newline?? volendo potrei farlo con lo spazio?!!?
__________________
_______________________________________________ AMD Athlon64 3500+, Cooler Master Hyper 6, Asus A8V Deluxe wifi-g Rev2.0, Corsair TwinX-1024 Pc3200XL Platinum, Western Digital Raptor 74GB, Cooler Master CoolDrive 4, Sapphire Radeon 9600XT 256MB, Sound Blaster Audigy Player, Cambridge Soundworks 4.0, Enermax Coolergiant EG485p/ax, Lg Flatron L1952S --- Acer Aspire 5024 ![]() Apple MacBook Pro 13" 2.53GHz |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 290
|
ah ok ho capito... ma potrei usare come carattere delimitatore lo spazio^??
__________________
_______________________________________________ AMD Athlon64 3500+, Cooler Master Hyper 6, Asus A8V Deluxe wifi-g Rev2.0, Corsair TwinX-1024 Pc3200XL Platinum, Western Digital Raptor 74GB, Cooler Master CoolDrive 4, Sapphire Radeon 9600XT 256MB, Sound Blaster Audigy Player, Cambridge Soundworks 4.0, Enermax Coolergiant EG485p/ax, Lg Flatron L1952S --- Acer Aspire 5024 ![]() Apple MacBook Pro 13" 2.53GHz |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Altrimenti puoi usare un altro carattere come separatore, ad esempio la virgola. Vedi tu cosa devi fare e cosa ti sembra meglio.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 290
|
in quel caso mi va benissimo avere due token separati, tanto cognome e nome fanno parte devono essere due elementi di una struttura
solo avrei ancora un ultimo dubbio: ad esempio con il comando C, lui dopo dovrebbe accettare o una stringa contenente Cognome e Nome, oppure il numero di matricola (sempre come stringa), cè un modo poi per capire se l'utente ha scritto dei numero o delle lettere, se i valori letti da tastiera sono salvati in una stringa?? cioè se il token è formato da numeri o da caratteri...
__________________
_______________________________________________ AMD Athlon64 3500+, Cooler Master Hyper 6, Asus A8V Deluxe wifi-g Rev2.0, Corsair TwinX-1024 Pc3200XL Platinum, Western Digital Raptor 74GB, Cooler Master CoolDrive 4, Sapphire Radeon 9600XT 256MB, Sound Blaster Audigy Player, Cambridge Soundworks 4.0, Enermax Coolergiant EG485p/ax, Lg Flatron L1952S --- Acer Aspire 5024 ![]() Apple MacBook Pro 13" 2.53GHz |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Codice:
#include <ctype.h>
int is_str_numeric (char *p)
{
while (*p != '\0')
if (isdigit (*p++) == 0)
return 0;
return 1;
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 290
|
domani implemento la funzione... grazie mille!!!
__________________
_______________________________________________ AMD Athlon64 3500+, Cooler Master Hyper 6, Asus A8V Deluxe wifi-g Rev2.0, Corsair TwinX-1024 Pc3200XL Platinum, Western Digital Raptor 74GB, Cooler Master CoolDrive 4, Sapphire Radeon 9600XT 256MB, Sound Blaster Audigy Player, Cambridge Soundworks 4.0, Enermax Coolergiant EG485p/ax, Lg Flatron L1952S --- Acer Aspire 5024 ![]() Apple MacBook Pro 13" 2.53GHz |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:47.




















