A voir également:
- Compter caractère mot
- Caractère ascii - Guide
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Voir mot de passe wifi android - Guide
- Mot de passe administrateur - Guide
20 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
Modifié par fiddy le 20/08/2011 à 16:38
Modifié par fiddy le 20/08/2011 à 16:38
Bonjour,
Il y a plusieurs méthodes. Tu peux par exemple compter le nombre de caractères jusqu'au '\0'.
Cdlt,
Google is your friend
Il y a plusieurs méthodes. Tu peux par exemple compter le nombre de caractères jusqu'au '\0'.
Cdlt,
Google is your friend
Salut,
Mais je ne sais pas comment faire, j'ai fait un programme mais qui me donne pas dutout ce que je veux...
merci
Mais je ne sais pas comment faire, j'ai fait un programme mais qui me donne pas dutout ce que je veux...
merci
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
20 août 2011 à 16:15
20 août 2011 à 16:15
Commence par poster ton programme qu'on puisse t'aider, ça sera plus simple...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bon si tu veux ^^
#include <stdio.h> #include <stdlib.h> int main() { char Caractere; scanf("%c", &Caractere); while(Caractere != '\n') { printf("%c", Caractere); Caractere = Caractere + 1; } return 0; }
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
20 août 2011 à 16:41
20 août 2011 à 16:41
Ton but est de compter le nombre de caractères dans une phrase. Il faut donc deux choses au minimum : la variable caractère et la variable phrase.
Pour commencer, tu peux mettre : char *phrase="Je suis une phrase";
Ensuite, il faudra compter le nombre de caractères de phrase. Pour cela une boucle for. La condition sera "tant que différent de '\0' et non de '\n'.
Tiens compte de mes remarques et reposte :-)
Pour commencer, tu peux mettre : char *phrase="Je suis une phrase";
Ensuite, il faudra compter le nombre de caractères de phrase. Pour cela une boucle for. La condition sera "tant que différent de '\0' et non de '\n'.
Tiens compte de mes remarques et reposte :-)
Je ne connais pas '\0' , c'est censé faire quoi ?
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
20 août 2011 à 16:56
20 août 2011 à 16:56
Une chaîne de caractère se termine par un '\0'.
En faisant donc : while (*p != '\0') en incrémentant p, vous connaîtrez le nombre de caractères de la phrase.
En faisant donc : while (*p != '\0') en incrémentant p, vous connaîtrez le nombre de caractères de la phrase.
j'ai fait ça,
#include <stdio.h> #include <stdlib.h> int main() { char caractere; char phrase; scanf("%c", &caractere); for (caractere; caractere != '\0'; caractere++) { printf("%c", caractere); } return 0; }
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
Modifié par fiddy le 20/08/2011 à 21:08
Modifié par fiddy le 20/08/2011 à 21:08
Une phrase est un tableau de caractère, c'est donc de la forme char [] ou char* comme j'ai mis dans mon exemple. char représente seulement un caractère.
Voici ce que je propose :
Ceci peut être optimisé mais pour commencer c'est pas trop mal. Sinon il y a la fonction strlen() qui existe déjà.
Cdlt,
Voici ce que je propose :
#include <stdio.h> #include <stdlib.h> int main (void) { char nbCar=0; const char *phrase="Je suis une phrase"; char *p=phrase; while ( *p != '\0' ) { p++; } printf("nb de caracatères : %d\n", nbCar); return 0; }
Ceci peut être optimisé mais pour commencer c'est pas trop mal. Sinon il y a la fonction strlen() qui existe déjà.
Cdlt,
Merci, mais ce n'est qu'un début de code, c'est bien ça ?
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
Modifié par fiddy le 20/08/2011 à 21:07
Modifié par fiddy le 20/08/2011 à 21:07
Beh, mon code est fonctionnel.
Mais il reste à compter le nombre de caractères dans la phrase.
Et à toi de l'améliorer selon tes attentes.
Mais il reste à compter le nombre de caractères dans la phrase.
Et à toi de l'améliorer selon tes attentes.
Ok oui, parce que quand je compile, il me donne nb caractere : 0 et c'est tout.
Et sinon, comment utiliser strlen ?
merci
Et sinon, comment utiliser strlen ?
merci
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
20 août 2011 à 21:09
20 août 2011 à 21:09
Beh il te restait à mettre après le p++, nbCar++; pour incrémenter le nombre de caractères. C'est tout... Souhaiterais-tu un tutorial pour comprendre ? Car c'est la base cet exercice.
Sinon pour strlen, il suffit de mettre : strlen(phrase); et ça te donne directement le nombre de caractères.
Sinon pour strlen, il suffit de mettre : strlen(phrase); et ça te donne directement le nombre de caractères.
salut,
j'ai modifié un peu le code, pour que l'utilisateur entre une phrase :
mais quand je mets des caractère, il affiche un mauvais chiffre.
Sinon, j'apprends le C++ sur le site du zéro, et le C va avec mais c'est vrai que pour le coup en C++ j'avais pas trop d'idée.
j'ai modifié un peu le code, pour que l'utilisateur entre une phrase :
#include <stdio.h> #include <stdlib.h> int main() { char nbCar; char phrase; scanf("%c", &phrase); while ( phrase != '\0' ) { phrase++, nbCar++; } printf("%d\n", nbCar); return 0; }
mais quand je mets des caractère, il affiche un mauvais chiffre.
Sinon, j'apprends le C++ sur le site du zéro, et le C va avec mais c'est vrai que pour le coup en C++ j'avais pas trop d'idée.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
20 août 2011 à 22:09
20 août 2011 à 22:09
Attention à ne pas mélanger le C et le C++, ce sont deux langages différents.
En plus, ton programme est faux.
Comme je t'ai dit plus haut : une phrase doit être stockée dans un tableau de caractère. Il s'agit donc de mettre char []. Par exemple char phrase[256];
Ce n'est pas scanf("%c", &phrase); qu'il faut mettre mais : scanf("%s", phrase); ou mieux scanf("%255s", phrase);
De plus tu as enlevé le pointeur char *p que j'avais mis et qui faisait que ça marche.
En plus, ton programme est faux.
Comme je t'ai dit plus haut : une phrase doit être stockée dans un tableau de caractère. Il s'agit donc de mettre char []. Par exemple char phrase[256];
Ce n'est pas scanf("%c", &phrase); qu'il faut mettre mais : scanf("%s", phrase); ou mieux scanf("%255s", phrase);
De plus tu as enlevé le pointeur char *p que j'avais mis et qui faisait que ça marche.
Pourquoi tu mets un 256 dans char phrase ? ^^
scanf("%s", phrase); Pourquoi un s ?
merci
scanf("%s", phrase); Pourquoi un s ?
merci
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
20 août 2011 à 22:21
20 août 2011 à 22:21
Pourquoi tu mets un 256 dans char phrase ? ^^
char phrase, signifie que tu réserves une case dans la mémoire (pile) pour stocker un caractère. char phrase[256]; signifie que tu réserves 256 cases dans la mémoire pour stocker 256 caractères (incluant le '\0' qu'on a vu). Je suis parti du principe que ta phrase ferait 255 caractères maximum, mais tu peux changer.
scanf("%s", phrase); Pourquoi un s ?
Un s, c'est pour permettre à l'utilisateur de taper plusieurs caractères. Si, tu mets %c, il ne stockera que le premier caractère dans la variable.
char phrase, signifie que tu réserves une case dans la mémoire (pile) pour stocker un caractère. char phrase[256]; signifie que tu réserves 256 cases dans la mémoire pour stocker 256 caractères (incluant le '\0' qu'on a vu). Je suis parti du principe que ta phrase ferait 255 caractères maximum, mais tu peux changer.
scanf("%s", phrase); Pourquoi un s ?
Un s, c'est pour permettre à l'utilisateur de taper plusieurs caractères. Si, tu mets %c, il ne stockera que le premier caractère dans la variable.
ok d'accord, c'est clair, je vais essayer de re faire le code plus tard, je te tiens au courant, merci encore
periplasme
Messages postés
391
Date d'inscription
vendredi 22 avril 2011
Statut
Membre
Dernière intervention
5 février 2013
53
20 août 2011 à 23:33
20 août 2011 à 23:33
fiddy, je sais pas comment tu fais pour pas perdre patience ...
tu repond jamais a coté, toujours a expliqué exactement ce que tu fais afin d'etre comprehensible pour tous ...
les gens a qui tu réponds ont beaucoup de chance !
tu repond jamais a coté, toujours a expliqué exactement ce que tu fais afin d'etre comprehensible pour tous ...
les gens a qui tu réponds ont beaucoup de chance !
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
21 août 2011 à 13:01
21 août 2011 à 13:01
Merci pour le compliment, c'est trop d'honneur ;-))).
j'avoue ^^
j'ai refait le programme avec tes conseils fiddy. Le programme marche quand on entre les caractère à la suite mais si on met des espaces entre, il compte le nombre de mots :
j'ai refait le programme avec tes conseils fiddy. Le programme marche quand on entre les caractère à la suite mais si on met des espaces entre, il compte le nombre de mots :
#include <stdio.h> #include <stdlib.h> int main (void) { char nbCar=0; char phrase[256]; char *p=phrase; scanf("%255s", phrase); while ( *p != '\0' ) { p++, nbCar++; } printf("nb de caracteres : %d\n", nbCar); return 0; }
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
21 août 2011 à 20:33
21 août 2011 à 20:33
Normal. scanf("%255s", phrase); ne prend qu'une phrase sans espace, donc un mot.
Dans ce cas, il faut plutôt utiliser fgets(phrase, sizeof phrase, stdin);
Mais c'est un peu plus compliqué, car le caractère '\n' sera stocké également dans phrase (s'il y a de la place).
Dans ce cas, il faut plutôt utiliser fgets(phrase, sizeof phrase, stdin);
Mais c'est un peu plus compliqué, car le caractère '\n' sera stocké également dans phrase (s'il y a de la place).
Oui, j'ai modifié le code, et j'entre les caractères, il me donne 3 alors que j'ai mis seulement 2. Comment pallier à ce problème ?
merci fiddy
merci fiddy
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
21 août 2011 à 20:51
21 août 2011 à 20:51
Beh, s'il rajoute le caractère '\n', il suffit de mettre - 1.
Ou alors au lieu de tester while(*p!='\0') vous mettez while(*p!='\n')
Ou alors au lieu de tester while(*p!='\0') vous mettez while(*p!='\n')
Re Salut, je sollicite encore ton aide fiddy, parce que je voudrais faire le même type de programme mais différemment, sans l'utilisation des pointeurs donc j'ai codé ça :
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char phrase[256];
char nbCaractere;
scanf("%s", &phrase);
while(phrase != '\0')
{
nbCaractere++;
}
printf("%d", nbCaractere);
return 0;
}
Mais marche pas..
merci beaucoup
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char phrase[256];
char nbCaractere;
scanf("%s", &phrase);
while(phrase != '\0')
{
nbCaractere++;
}
printf("%d", nbCaractere);
return 0;
}
Mais marche pas..
merci beaucoup
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
Modifié par fiddy le 23/08/2011 à 08:33
Modifié par fiddy le 23/08/2011 à 08:33
scanf("%s", &phrase);
Ce n'est pas &phrase, qu'il faut mettre mais phrase comme j'avais mis plus haut.
while(phrase != '\0')
Le compilateur doit te signaler un problème. phrase est de type char* alors que '\0' est de type char. Si tu souhaites faire ainsi, il te faut une variable supplémentaire : int i = 0;
Et ensuite tu mets : while (phrase[i]!='\0') { i++; nbCaractere++;}
N'oublie pas non plus d'initialiser nbCar à 0; (int nbCaractere = 0;).
Et enfin n'oublie de mettre un saut de ligne avant le return 0; par exemple : printf("%d\n",nbCaractere);
Ce n'est pas &phrase, qu'il faut mettre mais phrase comme j'avais mis plus haut.
while(phrase != '\0')
Le compilateur doit te signaler un problème. phrase est de type char* alors que '\0' est de type char. Si tu souhaites faire ainsi, il te faut une variable supplémentaire : int i = 0;
Et ensuite tu mets : while (phrase[i]!='\0') { i++; nbCaractere++;}
N'oublie pas non plus d'initialiser nbCar à 0; (int nbCaractere = 0;).
Et enfin n'oublie de mettre un saut de ligne avant le return 0; par exemple : printf("%d\n",nbCaractere);
Oui j'ai refait le code :
Mais quand on mets deux mots par exemple, il mets 2 et non, le nombre de caractère..
merci
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char phrase[256]; int nbCaractere = 0; int i = 0; scanf("%s", phrase); while (phrase[i]!='\0') { i++; nbCaractere++; } printf("%d\n", nbCaractere); return 0; }
Mais quand on mets deux mots par exemple, il mets 2 et non, le nombre de caractère..
merci
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
23 août 2011 à 20:16
23 août 2011 à 20:16
Il met plutôt le nombre de caractère du premier mot.
Je vous invite à relire le message : https://forums.commentcamarche.net/forum/affich-22932995-compter-caractere-mot#24
Cdlt
Je vous invite à relire le message : https://forums.commentcamarche.net/forum/affich-22932995-compter-caractere-mot#24
Cdlt
Salut,
Voici le code, donc quand je met un mot, il met 1, quand je mets deux mots, ça marche mais il ne compte pas l'espace entre.
Voici le code, donc quand je met un mot, il met 1, quand je mets deux mots, ça marche mais il ne compte pas l'espace entre.
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char phrase[256]; int nbCaractere = 0; int i = 0; scanf("%s", phrase); fgets(phrase, sizeof phrase, stdin); while (phrase[i]!='\0') { i++; nbCaractere++; } printf("%d\n", nbCaractere); return 0; }
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
23 août 2011 à 23:27
23 août 2011 à 23:27
Tu mets scanf("%s",) et fgets...
Soit c'est l'un soit c'est l'autre.
Dans votre cas, il faut juste mettre fgets.
Ensuite, comme dis plus haut, n'oubliez pas de metre phrase[i]!='\n' dans le while avec fgets.
Soit c'est l'un soit c'est l'autre.
Dans votre cas, il faut juste mettre fgets.
Ensuite, comme dis plus haut, n'oubliez pas de metre phrase[i]!='\n' dans le while avec fgets.