A voir également:
- Compter caractère mot
- Caractère spéciaux - Guide
- Caractère ascii - Guide
- Caractere speciaux - Guide
- Trousseau mot de passe iphone - Guide
- Caractere vide - Guide
20 réponses
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
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;
}
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 :-)
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;
}
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,
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
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.
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 ? ^^
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
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 !
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;
}
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
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
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
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;
}