Chaîne de caractères

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

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

  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    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 comme
    I
    (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 des
    enum
    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 fonction
    freqchar_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
    0
    1. Joujou98
       
      Merci énormément
      0