Ciao ragazzi, sto realizzando un programmino che tramite una procedura mi consenta di inserire dei valori all'interno di una struttura.
Questo è parte del codice (ho messo solo le cose più importanti):
Per l'inserimento del nome non ci sono problemi, visto che non devo fare nessun controllo, invece per il colore devo controllare che sia scritto in esadecimale, per far ciò vorrei utilizzare una funzioncina.
stavo pensando di farla in questo modo:
Il problema è che non so come prendere il valore appena preso in input e passarlo alla funzione checkInput, ho delle difficoltà con i puntatori :(
Questo è parte del codice (ho messo solo le cose più importanti):
C:
typedef struct{
char name[DIM];
char color[6+1]; //6 caratteri per il colore 1 per il terminatore di stringa
char color2[6+1];
}Record;
int main() {
Record subj;
insRecord(&subj);
}
void insRecord(Record *subj){
printf("\nName ");
scanf("%64[^\n]s", subj->name);
cleanBuffer();
printf("\nColor ");
scanf("%s", subj->color);
checkInput();
cleanBuffer();
printf("\nColor2 ");
scanf("%s", subj->color2);
checkInput();
cleanBuffer();
}
int cleanBuffer(){
int cont= 0;
char c;
do{
cont++;
c = getchar();
}while(c != '\n');
return cont;
}
Per l'inserimento del nome non ci sono problemi, visto che non devo fare nessun controllo, invece per il colore devo controllare che sia scritto in esadecimale, per far ciò vorrei utilizzare una funzioncina.
stavo pensando di farla in questo modo:
C:
checkInput(char *i){
int cont=0;
for (;cont<6;){
if (i[cont] >= 'A' && i[cont] <= 'F' || i[cont] >= 'a' && i[cont] <= 'f'
|| i[cont] >= 0 && i[cont] <= 9)
cont++;
else {
printf("\nHai inserito un carattere non valido: %s", i[cont]);
return 0;
}
}
}
Il problema è che non so come prendere il valore appena preso in input e passarlo alla funzione checkInput, ho delle difficoltà con i puntatori :(