Chaîne de caractères
Joujou98
-
Joujou98 -
Joujou98 -
Bonjour,
On nous demande de construire une fonction qui retourne le nombre d'occurrence du caractère C dans une chaîne S
Voilà comment j'ai fait
Mais ça n'a pas marché dans le main()
Aidez moi svp
On nous demande de construire une fonction qui retourne le nombre d'occurrence du caractère C dans une chaîne S
Voilà comment j'ai fait
Int freqchar ( char*M,char C )
{ Int nb=0,l ;
l=strlen(M) ;
for( int I=0;I<=l-1;I++)
{ If ( M[I]== C)
nb++ ;
}
Return nb ;
}
Mais ça n'a pas marché dans le main()
Aidez moi svp
Configuration: Android / Chrome 70.0.3538.80
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
1 réponse
-
Salut Joujou98,
Chez moi cela marche, une fois que l'on a corrigé ton code en retirant les majuscules mises aux mots clefs du C (qui créeraient des erreurs de compilation, et non à l'exécution).
Sur le plan du style, je te conseille de ne pas utiliser de multiples déclarations sur une ligne, surtout avec des noms de variables commeI
(la lettre L minuscule), qui peut être confondue avec le chiffre 1 ou avec la lettre i majuscule, que tu utilises par ailleurs, de réserver l'usage de capitales pour des constantes littérales définies via#define
ou desenum
et d'améliorer ton indentation. Tu peux aussi alléger le test de la boucle for en testant seulement que la variable est strictement inférieure. J'inclus ci-après un exemple de style corrigé dans une fonctionfreqchar_corr()
...
#include <stdio.h> #include <string.h> int freqchar ( char*M,char C ) { int nb=0,l ; l=strlen(M) ; for( int I=0;I<=l-1;I++) { if ( M[I]== C) nb++ ; } return nb ; } /* style préférable ci-après */ int freqchar_corr(char * s, char c) { int nb = 0; int len; len = strlen(s); for (int i = 0; i < len; i++) if (s[i] == c) nb++; return nb; } int main(void) { char * s = "ribambelle"; char c = 'e'; printf("il y a %d lettres '%c' dans %s\n", freqchar(s, c), c, s); return 0; }
donne :
$ gcc -Wall 35708267.c
$ ./a.out
il y a 2 lettres 'e' dans ribambelle
$
Dal