• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Problema risolto Ciclo do

Se usi %d e quindi la scanf si attende delle cifre, se non arriva nessuna cifra ma solo delle lettere, allora la scanf restituisce 0.

Se usi %s per una stringa, è normale che non otterrai 0 perché qualsiasi carattere va bene. Quindi il controllo può essere utilizzata per gli interi non per le stringhe.

Ah ecco, me lo immaginavo. Ho chiesto perché a volte il programmatore potrebbe voler controllare se l'utente ha inserito correttamente l'input richiesto dal programma e dal momento che la scanf restituisce 0 nel caso in cui riceve un tipo di dato che non si aspettava allora pensavo si potesse utilizzare per controllare l'input ma poi ho pensato che con le stringhe e con i caratteri non funzionerebbe, a meno che non si verifica la lunghezza della stringa, se è maggiore di 1 sicuramente è una stringa altrimenti un carattere.

Comunque @oscarandrea inserendo quel controllo suggerito da nothing si risolve il programma.
 
Oggi stavo scrivendo un programma in c e mi sono accorto che se nel ciclo do non rispetti il tipo di "carattere" ripete all'infito per farvi capire ho fatto un esempio,questo "programma" funziona ma se ad esempio invece di numeri metto una lettera ripete all'infito la scritta "digita un numero" why? non dovrebbe restituire un errore? O.o
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

inizializza a su 0 , se leggi un carattere usando %d questo non verrà assegnato ad a , quindi controlli se è uguale a 0 assegni un numero negativo che controlli nel ciclo ^^


Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
 
Ultima modifica: