Comptage de caractères en C

Je suis en train d'écrire un programme qui compte tous les caractères dans une chaîne. J'ai d'abord eu, mais alors réalisé que je ne peux pas compter les espaces. Je ne vois pas pourquoi cela ne fonctionne pas.

for(m=0; z[m] != 0; m++) {
    if(z[m] != ' ') {
        charcount ++;
    }
}

Toute aide appréciée.

Edit* Fait-il une différence si l'entrée(les chaînes) sont en cours de numérisation dans ce genre? Et oui, tout est initialisé. J'ai essayé l'impression que z[m] évalue aussi, et ce n'est pas la valeur réelle de la chaîne à "m", je pense que c'est le problème.

for(j=0; j<7; j++){
    printf("Enter a string:\n");
    scanf("%s", z);
        for(m=0; z[m] != 0; m++){
                if(z[m] != ' '){
                charcount ++;
                }
        }
Avez-vous initialiser charcount à zéro avant la boucle?
Qui devrait, en effet, de travail, de sorte qu'il ne fonctionne pas (vous avez par exemple ) Et vous êtes sûr il y a des espaces dans le texte, et non pas par exemple les onglets ?
Pour ajouter à la confussion, veuillez noter qu'un personnage est différent d'un octet, un personnage peut prendre plusieurs octets dans un encodage multi-octets (e.g: UTF-8)
scanf lui-même ignore les espaces, si vous n'en avez pas besoin si vous utilisez scanf. Mais votre code a un sérieux problème en ce qu'elle ne peut pas assurer scanf ne pas écrire en dehors des limites de z. Vous pouvez utiliser %10s (ou quelle que soit la longueur de z est, moins 1) au lieu de %s pour résoudre ce problème.

OriginalL'auteur James | 2010-09-19