Retrouver le nbre de mot dans une chaine
Sabetodo
Messages postés
127
Statut
Membre
-
Sabetodo Messages postés 127 Statut Membre -
Sabetodo Messages postés 127 Statut Membre -
Bonjour,
salut les gars!!il y a juste un petit probleme dont j'arrive pas à me debarasser. Au fait, je dois faire un petit programme permettant de retrouver le nbre de mot dans une chaine en C. Moi j'y suis presque arrive.Mon programme , au lieu de m'afficher le nombre de mot dans la chaine, il m'affiche le nombre de caractere.
voici mon code:
#include<stdio.h>
#inlcude<string.h>
#include<stdlib.h>
int main(int argc,char* argv[])
{
int i,compteur;
if(argc>2)
exit(EXIT_FAILURE)
else
{
for(i=0;i<strlen(argv[1]);i++)
{
if(argv[1][i]!=' ')
{
compteur++;
}
}
printf("%d",compteur);
}
printf("\n");
}
NB: Aidez-moi les gars.
salut les gars!!il y a juste un petit probleme dont j'arrive pas à me debarasser. Au fait, je dois faire un petit programme permettant de retrouver le nbre de mot dans une chaine en C. Moi j'y suis presque arrive.Mon programme , au lieu de m'afficher le nombre de mot dans la chaine, il m'affiche le nombre de caractere.
voici mon code:
#include<stdio.h>
#inlcude<string.h>
#include<stdlib.h>
int main(int argc,char* argv[])
{
int i,compteur;
if(argc>2)
exit(EXIT_FAILURE)
else
{
for(i=0;i<strlen(argv[1]);i++)
{
if(argv[1][i]!=' ')
{
compteur++;
}
}
printf("%d",compteur);
}
printf("\n");
}
NB: Aidez-moi les gars.
A voir également:
- Retrouver le nbre de mot dans une chaine
- Trousseau mot de passe iphone - Guide
- Mot de passe administrateur - Guide
- Mot de passe bios perdu - Guide
- Retrouver mot de passe wifi android - Guide
- Retrouver message supprimé whatsapp - Guide
4 réponses
c'est normal le symbole ' ' veut tout simplement dire n'importe quel caractère, ce n'est pas un espace.
pour rechercher l'espace, il faudrait que tu mette le code ASCII de l'espace à rechercher
pour rechercher l'espace, il faudrait que tu mette le code ASCII de l'espace à rechercher
Salut,
Tu te compliques bien la vie, et en plus ça ne pourra pas marcher.
A chaque mot (un espace) envoyé en arguments correspond un nouvel argument.
Donc tester, si tu as argv>2 et quitter, tu sauras qu'au max tu as un argument (mot). Et puis rien te garanti que tu en auras au moins un vu que tu ne testes pas si argc > 1.
En fait, si tu dois savoir le nombre de mots passés en arguments du programme, c'est très simple, c'est strictement argc - 1.
Pas besoin de boucle.
Tu te compliques bien la vie, et en plus ça ne pourra pas marcher.
A chaque mot (un espace) envoyé en arguments correspond un nouvel argument.
Donc tester, si tu as argv>2 et quitter, tu sauras qu'au max tu as un argument (mot). Et puis rien te garanti que tu en auras au moins un vu que tu ne testes pas si argc > 1.
En fait, si tu dois savoir le nombre de mots passés en arguments du programme, c'est très simple, c'est strictement argc - 1.
Pas besoin de boucle.
A priori tu n'as pas lu mon message.
Tu te compliques bien la vie, et en plus ça ne pourra pas marcher.
A chaque mot (un espace) envoyé en arguments correspond un nouvel argument.
Donc tester, si tu as argv>2 et quitter, tu sauras qu'au max tu as un argument (mot). Et puis rien te garanti que tu en auras au moins un vu que tu ne testes pas si argc > 1.
En fait, si tu dois savoir le nombre de mots passés en arguments du programme, c'est très simple, c'est strictement argc - 1.
Pas besoin de boucle.
Tu te compliques bien la vie, et en plus ça ne pourra pas marcher.
A chaque mot (un espace) envoyé en arguments correspond un nouvel argument.
Donc tester, si tu as argv>2 et quitter, tu sauras qu'au max tu as un argument (mot). Et puis rien te garanti que tu en auras au moins un vu que tu ne testes pas si argc > 1.
En fait, si tu dois savoir le nombre de mots passés en arguments du programme, c'est très simple, c'est strictement argc - 1.
Pas besoin de boucle.
Non, en C ' ' signifie bel et bien le code ascii de l'espace !
Tu fais ton test, sur argv[1], mais argv[1] ne peut pas contenir d'espaces. argv[1] est composé d'un seul mot. Si lors du passage des arguments tu as des espaces, ils seront ignorés et répartis dans argv[1], argv[2], etc.
Donc compter le nombre de mots dans argv[1] n'a aucun sens.
Le nombre de mots est tout simplement argc - 1 (nombre d'arguments - 1).
Après si tu veux faire un test, il faut utiliser sur une vraie chaîne.
Par exemple sur :
char *ch="coucou ceci est un test"; char cpt=0; for(int i=0;i<strlen(ch);i++) if (ch[i] == ' ') cpt++; printf("nombres de mots : %d\n",cpt+1);Le code ascii ' ' marche très bien, contrairement à ce qui a été dit ;)