Bon, ça fait quelque temps que j'ai pas écrit en C et normalement le mieux serait quand même que tu cherches un peu plus de toi même, mais vu que ça fait quelques lignes, c'est l'occasion de se remettre dans le bain... 
Et je pense que ta fonction au milieu est plutôt inutile pour ce qu'elle fait, mais c'est une question de forme.
int count_char(char m[]);
int main()
{
int n;
n = count_char("test");
printf("%d\n", n); // on aurait pu directement remplacer l'argument n par le retour de count_char
}
int count_char(char m[]) // (char * m) marche aussi sans warning je crois, vu que ça revient au même (?)
{
int i = 0;
while (m[i] != '\0') // équivaut à (*(m+i) != 0)
i++;
return i;
}
J'ai pas compilé par contre, donc à voir si j'ai pas fait d'erreur...
A noter que que si jamais tu passe une chaîne de caractère qui ne se finit pas par un caractère nul \0, ton programme plantera très certainement. Mais bon c'est comme ça le C, on doit traiter la problématique en amont 
Dans ce genre de contexte simple, il me semble qu'il y a équivalence entre la syntaxe pointeur et tableau, mais attention car dans d'autres cas les différences sémantiques sont plus compliquées.
On aurait même pu se payer le luxe d'utiliser l'incrémentation directement ici while (m[i++] != '\0'); mais ça c'est pour se la péter un peu, c'est pas forcément plus lisible 
Message édité le 10 octobre 2018 à 22:48:11 par aAardvark