Ciao,
probabilmente sono l'ultima persona del forum che dovrebbe risponderti,
per cui prendi quello che ti dico con le pinze !
Visto che hai preso in carico un esempio di codice postato da me,
cominciamo a considerare la condizione while corretta, ovvero:
while( (c = getchar() ) != EOF )
altrimenti rischiamo di partire male.
La condizione del while dice: finchè in c c'è un valore diverso da -1,
ovvero EOF, esegui quello che c'è tra { ...}.
La condizione in while assumerà valore 1, ovvero vera (true), sempre, ad eccezione del
caso in cui digiti ctrl+z.
In quest'ultimo caso c sarà = -1 quindi la condizione in while è falsa, ovvero 0, e si esce
dal ciclo.
Non serve che tu dia -1, perchè il compilatore analizza un carattere alla volta e quindi
legge prima "-", poi "1".
Spero di essere stato chiaro, ma soprattutto corretto.
Ciao