Chaines de caracteres
Résolu
chimou-gaga
Messages postés
23
Date d'inscription
Statut
Membre
Dernière intervention
-
chimou-gaga Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
chimou-gaga Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je commence à manipuler les chaines en programmation C,
Je souhaite calculer le nombre des chiffres, lettres et symboles dans une chaine de caractere.
j'ai essayé ça mais ça ne marche pas :
Il y en a 6 erreurs que je ne sais pas comment corriger. et je me demande si le teste par les intervalles in [] est correcte ou pas.
Merci d'avance.
--
Dans le monde il y a 10 types de personnes,ceux qui comprennent le binaire, et les autres.
Je commence à manipuler les chaines en programmation C,
Je souhaite calculer le nombre des chiffres, lettres et symboles dans une chaine de caractere.
j'ai essayé ça mais ça ne marche pas :
#include <stdio.h>
#include <string.h>
void main ()
{
int nchiffre, nlettre , autre,longueur,i;
char chaine[100];
/*introduire la chaine*/
printf ("introduire une chaine");
scanf_s(chaine);
/*stocker la longeure de la chaine*/
longueur =strlen(chaine);
/*initialistation des compteurs*/
nchiffre=0;nlettre=0;autre=0;
/*parcourir la chaine et test sur chaque caractere*/
for (i=0;i<longueur;i++)
{
if chaine[i] in ["0".."9"]
{
nchiffre = nchiffre+1;
};
else if chaine[i] in ["a".."z"]
{
nlettre= nlettre+1;
};
else autre=autre+1;
};
printf ("le nombre des chiffres est %d ,le nombre des lettres est %d et le nombre des symboles est %d",nchiffre,nlettre,autre);
}
Il y en a 6 erreurs que je ne sais pas comment corriger. et je me demande si le teste par les intervalles in [] est correcte ou pas.
Merci d'avance.
--
Dans le monde il y a 10 types de personnes,ceux qui comprennent le binaire, et les autres.
1 réponse
-
Salut,
Eh, il va falloir que tu revois la syntaxe du C ^^. On ne met pas de point virgule après les accolades d'une structure. De plus, je ne crois pas que le test sur les intervalles existent en C... Et puis les caractères s'écrivent entre deux apostrophes. Et on met des parenthèses après un if. Et ...
Bon, en fait cela donne plutôt :if('0' <= chaine[i] && chaine[i] <= '9') // voilà une syntaxe le compilateur appréciera ;) { nchiffre++; // C'est plus simple d'incrémenter une variable ainsi }// pas de point ';' ici else if ('a' <= chaine[i] && chaine[i] <= 'z') { nlettre++; } // pas de ';' ici non plus else autre++;
Regarde ce que ça donne avec ça, essaie de comprendre tes erreurs...-
-
Je ne vois pas en quoi longueur = strlen(chaine); peut poser problème. Est-ce le compilateur qui t'indique une erreur, ou remarques-tu simplement un dysfonctionnement du programme à cause de ça ? Dans le 2ème cas, peut-être que la chaine que tu donnes en parametre à strlen n'est pas correcte.
Je suspecte la fonction scan_s, que je n'ai jamais vu. A ta place j'utiliserais plutôt : scanf("%s", chaine); -
-
-