Originariamente inviato da toni00c
if ( ! (chars[i] >= '0' && chars [i] <= '9' ) ) /* questa riga è il problema */

...

ho capito correttamente?



grazie
No. Quel ! davanti ad una condizione ne inverte il risultato.
Cioè l'if controlla sempre che un espressione sia vera tranne quando specifichi tu la condizione da verificare.

Quel codice controlla che la condizione AND sia vera, e la fa inverte quindi se è true diventa false, se è false diventa true (sono operatori dell'algebra di boole).
per controllare che l'espressione AND sia falsa devi fare

codice:
if ( (chars[i] >= '0' && chars [i] <= '9' ) == false )