Compteur de lettre

Signaler
Messages postés
86
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
21 janvier 2009
-
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
-
Bonjour


je sais qui exister sur ce site un programme qui compte le nombre de lettre de symbole en C


mais voila 2 heures que je le recherche .


quelqu'un sait ou il est ? sinon quelqu'un a un programme en C qui compte le nombre de lettre et de symbole d'une chaine que l'on indique?

a: 1
b:0
.
.
.
z: 0
>:0

merci de votre aide

15 réponses

Messages postés
65
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
29 septembre 2005
1
Si ce que tu veux, c'est la taille de la chaine de caractères, utilise strlen, déclarée dans string.h



Cependant, attention, cette fonction ne prend pas en compte le dernier caractère si c'est un espace.



L'autre solution est de diviser la taille de ta chaine de caractère par la taille de char.
Messages postés
86
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
21 janvier 2009

c'est pour la demande précedente que j'ai fait que je demande ça
Messages postés
86
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
21 janvier 2009

tu peut me donner le code en entier

merci d'avant
Messages postés
50
Date d'inscription
dimanche 28 décembre 2003
Statut
Membre
Dernière intervention
11 avril 2006
1
int getTaille(char[] chaine){

/* Chaine non instanciée : on retourne -1 */

if(chaine == NULL) return -1;



/* On parcourt toute la chaine jusqu'à tomber sur un caractere 'fin de chaine' spécifié par \0

unsigned int i=0;

while(chaine[i] != '\0') i++;



/* on retourne la taille */

return i;

}
Messages postés
65
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
29 septembre 2005
1
#include

#include <stdlib.h>



using namespace std;



int main()

{

char * chaine ;

int nbdecarac ;



chaine = "Bonjour" ;

nbdecarac = strlen (chaine) ;



cout << nbdecarac << "\n" ; // Sort "9"



system("PAUSE");

return 0;

}
Messages postés
65
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
29 septembre 2005
1
Ha ok je comprends mieux ce que tu voulais mainteant dsl.
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
strlen ne compterait pas le dernier espace, ça vient de sortir...

pour ne pas maintenir 2 variables int, un pointeur suffit:
int GetTaille(char *psz)
{
char *c = psz;
while(*c) c++;
return (c - psz);
}

ciao...
BruNews, MVP VC++
Messages postés
65
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
29 septembre 2005
1
Ah ben si ... erreur de ma part, dsl !
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
2
size_t strlen( const char *s )

{

size_t len = 0;



while( s++ )

++len;

return len;

}
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
manque la deref
while(*s++)....
tout le monde aura compris malgre tout.

ciao...
BruNews, MVP VC++
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
2
oui, merci !
Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008

Ca ne choc personne ce truc

char * chaine ;
int nbdecarac ;



chaine = "Bonjour" ;


moi je ferai

char * chaine = "Bonjour"

ou

chaine = (char*)malloc(strlen("Bonjour")+1);




Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
a+
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
ben oui, un pointeur peut se voir affecter nimporte quelle adresse, celle de "Bonjour" aussi bien qu'une autre, je ne vois pas le malaise.

ciao...
BruNews, MVP VC++
Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008

S'il pointe sur une espace alloué

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
a+
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
2
non ca ne pause absolument aucun probleme, cependant l'écriture



char *str;



str = "hello";



est obselète car str n'est pas initialisé à la déclaration, et la norme
conseil le const sur les chaines constantes (l'écriture peut faire
planter lee programme).



donc il vaut mieux écrire :



const char *str = "hello";



chaine =
(char*)malloc(strlen("Bonjour")+1); à remplacer par strdup, mais
inutile dans ce cas (de même que le cast de la valeur retour de
malloc er l'appel de strlen sur une chaine constante)