|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Mar 2004
Città: Ancona
Messaggi: 2383
|
[C]Validazione stretta
Sto studiando un'argomento che ancora non mi è molto chiaro, la validazione stretta.
Mettiamo che ho una cosa di questo tipo: Codice:
PuntatoreInsieme crea_insieme(void) { PuntatoreInsieme insieme = NULL; int valore = 0; int risposta = 0; while(risposta == 0) { /* acquisire il valore intero tramite tastiera */ printf("Inserisci un elemento intero da aggiungere all'insieme: "); scanf("%d", &valore); /* stampare a video il valore */ printf("valore: %d \n", valore); /* inserire il valore acquisito all'interno dell'insieme */ inserisci_in_coda(&insieme, valore); /* stampare a video l'insieme */ stampaInsieme(insieme); /* incrementare o arrestare gli elementi dell'insieme */ printf("Vuoi continuare ad inserire? (S=0/N=1)" ); scanf("%d", &risposta); printf("\n"); } return insieme; } su google non riesco a trovare niente e nemmeno sul kernighan Ritchie. Mi sapete aiutare? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2003
Città: Il Poli
Messaggi: 992
|
nella libreria ctype.h sono presenti le funzioni
isalpha isdigit isalnum tutte e tre restituiscono 1 o 0 nel caso in cui il carattere (char) che tu stia esaminando sia rispettivamente un carattere, una cifra oppure almeno una delle due. potresti quindi sempre acquisire una stringa, analizzarla carattere per carattere (o tokenizzarla ad esempio) e mettere in coda solo gli elementi interi (per numeri composti da più cifre ricorri alla funzione atoi() o anche strtod()). Non sono stato troppo preciso ma penso di averti dato qualche spunto! buon lavoro |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
se ti puo essere utile, scanf restituisce il numero di parti del format string ricevute con successo, quindi se ad esempio l'input é valido per il format string "%d" la scanf restituisce 1, altrimenti 0.
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:02.