J'essaye d'écrire une fonction qui compte le nombre de mots d'une chaîne de caractères donnée en paramètre sachant que deux mots sont séparés par un ou plusieurs espaces.
j'ai fait ça mais ça ne marche pas à tout les coup et je ne sais pas d'où vient le problème. Un petit coup de pouce please
void motChaine( char *ch)
{
int i=0;
int cpt=0;
while (ch[i]!='\0')
{
if (ch[i]==' '){
while(ch[i]==' ' && ch[i]!='\0'){
i++;
if(ch[i]!=' '){cpt++;}
}
}
i++;
}
printf("Le nombre de mot(s) est de: %d\n",cpt);
}
Mon petit Blog chéri // Mon adorable petit Twitter tout mimi
tant que le texte n'est pas fini
si il y a un espace
compteur++
tant qu'il y a des espace
i++
fin tant que
sinon
i++
fin si
fin tant que
/!\ ca ne gere pas s'il y a des espaces à la fin, ni au debut ou si il y a qu'un seul mot
tant qu'il y a des espaces
i++
fin tant que
si c'est pas la fin du fichier
compteur++
fin si
tant que mon fichier est pas fini
si il y a un espace
tant qu'il y a un espace
i++
fin tant que
si c'est pas la fin du fichier
compteur++
sinon
return compteur
fin si
fin si
i++
fin tant que
return compteur
@magma je suis pas sur que l'appel à sscanf est une bonne idée pour si peu
#include <stdio.h>
int is_sep(char c)
{
if (c == ' ' || c == '\0' || c == '\t')
return (0);
return (-1);
}
int my_count_word(const char *str)
{
int count;
int word;
if (str == NULL)
return (0);
word = 0;
count = 0;
while (str[count] != '\0')
{
if (is_sep(str[count]) && is_sep(str[count + 1]) == 0)
++word;
++count;
}
return (word);
}
int main(void)
{
const char chaine[] = "Une chaine de cinq mots";
puts(chaine);
printf("Nombre de mot(s) : %d\n", my_count_word(chaine));
return 0;
}
Me paraît plus intéressant car plus modulable (on pourrait reprendre la même structure pour compter le nombre de phrases)... Ça fait plaisir de voir que j'ai pas parler dans le vent...
- Edité par Masta_π 21 septembre 2013 à 20:43:24
parce que j'étais root toute la sainte journée, je n'ai pas vu le doute en moi s’immiscer ...
Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention. Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé. Pour plus d'informations, nous vous invitons à lire les règles générales du forum
Avant de poster, demandez-vous si ce que vous allez dire apporte quelque chose au sujet. Si votre message n'apporte rien, vous ferez perdre du temps à tout le monde et le sujet pourrait dévier ou devenir difficile à suivre.
Aussi, vérifiez la date du topic. Le déterrage de topic nuit au bon fonctionnement du forum et est interdit. Utilisez les boutons pour dire merci. Si le topic date de plus de deux mois sans réponses, mieux vaut ne pas répondre. Si vous avez une question similaire, créez plutôt votre propre sujet en détaillant votre contexte
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent