2010-08-21 5 views
0

J'essaie de créer une petite fonction qui retourne le nombre d'espaces dans une variable Char * en utilisant le langage C.Compteur de caractères vides en C

Disons que j'ai cette chaîne: "hello hello hello". Je veux que la fonction retourne 2. Ceci est le code que j'ai jusqu'à présent:

int blankcounter(char* pline) 
{        
    int i=0;     
    int counter = 0;    
    while (pline[i] != '\0')  
    {        
    if (pline[i++] ==' ') 
     counter++; 
    } 
    return counter; 
} 

la source que je suis en train de lire est un fichier txt et 1 correction que je dois ajouter que le code que je posté fonctionne bien, mais a 1 inconvénient: si par exemple je veux lire: "bonjour quoi de mieux" i want my function to be able to return 2 but it returns 3 because of the space that appears just after the word en haut avez-vous une suggestion pour moi afin qu'il reviendra 2?

+2

Et quelle est votre question? –

+5

Fonctionne pour moi. Il ne vérifiera que les espaces littéraux. Vous pouvez utiliser 'isspace' pour être plus général. –

+0

pour une raison quelconque, il ne fonctionne pas pour moi ... le compteur reste sur 0 même si j'ai quelques espaces –

Répondre

2

Je suppose que vous ne voudriez pas compter les espaces de premier plan aussi "bonjour quoi de mieux" devrait retourner 2 aussi bien?

Je peux proposer 2 solutions. La première consiste à couper tous les espaces avant de commencer à les compter How do I trim leading/trailing whitespace in a standard way?.

La seconde est d'ajuster le début et la fin de la boucle au premier et dernier caractères non-espace, puis effectuer le décompte:

int start=0; 
int end = strlen(pline); 
int i=0; 
while (pline[i++]==' ') start++; 
i=end-1; 
while (pline[i--]==' '&& i >= 0) end--; 
for (i=start; i<end; i++) { your count procedure} 
+0

la source que je lis est un fichier txt et 1 correction que je dois ajouter est que le code que j'ai posté fonctionne en effet, mais a 1 inconvénient: si par exemple je veux lire: '" bonjour quoi de mieux "' je veux que ma fonction soit en mesure de retourner 2 mais elle retourne 3 à cause de l'espace qui apparaît juste après le mot 'up' avez-vous des suggestions pour moi alors ça va retourner 2? –

+0

Je pense que vous ne voudriez pas compter les espaces de premier plan aussi "bonjour quoi de mieux" devrait retourner 2 aussi bien non? Je peux proposer 2 solutions. La première consiste à couper tous les espaces avant de commencer à les compter . La seconde consiste à ajuster le début et la fin de votre boucle au premier et au dernier caractère non-espace, puis à effectuer le comptage: int start = 0; int end = strlen (pline); int i = 0; while (pline [i ++] == '') commence ++; et de la même manière en descendant de la fin de la corde pour ajuster la "fin". – spbfox

0

Question: Compteur de caractères vides en C?

Réponse: Oui.

+0

et oui le caractère vide est en c –

Questions connexes