Έχει διάφορα θέματα ο κώδικας αυτός, με σημαντικότερα τα παρακάτω....
1. θέλει #include <stdio.h> στην αρχή για να μπορείς να χρησιμοποιήσεις συναρτήσεις όπως η printf() και η getchar()
2. αυξάνεις τα i και b μέσα στο while-loop, χωρίς όμως να τους έχεις δώσει αρχική τιμή έξω από το loop
3. διαβάζεις μονάχα ένα c μέσω του getchar() έξω από το while-loop, αλλά μέσα στο loop δεν ξαναδιαβάζεις άλλο c, οπότε η συνθήκη του while-loop εξετάζει μονάχα τον 1ο χαρακτήρα από όσους πληκτρολογεί ο χρήστης (κι αν δεν είναι '\n' η συνθήκη είναι συνέχεια FALSE και άρα το loop εκτελείται επ' άπειρον
4. εφόσον διαβάζεις χαρακτήρες από το πληκτρολόγιο έναν-έναν με την getchar() δεν υπάρχει περίπτωση ο χρήστης να σου πληκτρολογήσει τον μηδενικό χαρακτήρα '\0' (δεν υπάρχει τέτοιο πλήκτρο στο keyboard). Άρα συμβάλει κι αυτό στο η συνθήκη του while-loop σου να είναι ΠΑΝΤΑ FALSE
5. όταν συγκρίνεις (διαχειρίζεσαι) χαρακτήρες πρέπει να χρησιμοποιείς μονά εισαγωγικά και όχι διπλά που έχει βάλει στα "\n", "\0" και " " (πρέπει: '\n' και ' '... το '\0' πρέπει να φύγει τελείως)
6. είχες κάτι... ξεκάρφωτα { } (τα σβησα

)
7. η main() πρέπει να ορίζεται ως int και να επιστρέφει στο τέλος της 0 είτε με
return 0; είτε με
exit(0);Υποθέτω ο κώδικας που ήθελες να γράψεις είναι κάτι σαν τον παρακάτω...
- Κώδικας: Επιλογή όλων
#include <stdio.h>
int main( void )
{
/*** UNUSED
int *p;
p = &i;
*p = 0;
*/
int b = 0;
int i = 0;
int c = getchar();
while (c != '\n') {
i++;
if (c == ' ')
b++;
c = getchar();
}
int mhkos = i-b;
printf("You typed %d non-space charachters\n", mhkos);
printf("\npress ENTER to exit..."); fflush(stdin); getchar();
return 0;
}