« Exercices en langage C/Chaines » : différence entre les versions

Annulation des modifications 132007 de 212.152.11.56 (discuter) Retour à la version de Greudin plus lisible.
(Annulation des modifications 132007 de 212.152.11.56 (discuter) Retour à la version de Greudin plus lisible.)
 
<div style="width:70%; float:left">{{Boîte déroulante|titre=Solution|contenu =
La fonction doit recevoir une chaîne de caractères. Une chaîne de caractères en C est un tableau de caractères, finissant par le caractère nul. La fonction doit donc recevoir un pointeur vers le premier élément du tableau, de type <tt>const char *</tt>, et chercher l'élément nul.
 
La fonction recevant un pointeur, il faut donc s'assurer qu'il est valide. On doit donc tester si le pointeur est nul ou non avant de regarder ce qui se trouve dans le tableau de caractères.
#include <stdlib.h>
 
size_tint longueur(const char *s)
{
constint char *pn = s-1;
if (p)s {!= NULL)
while (*p) {
n = ++p0;
forwhile (;s[n] *p;!= ++p'\0') {}
return p - s; {
n++;
}
}
return p - sn;
}
</source>
 
Ici, on a choisi de retourner la valeur 0-1 si le pointeur est nul.
 
La boucle de recherche de l'élément nul peut être aussi écrite avec un <tt>for</tt>:
#include <stdlib.h>
 
size_tint longueur(const char *s)
{
constint char *pn = s-1;
if (p)s {!= NULL)
{
for (; *p; ++p) {}
for (n = 0; s[n] != '\0'; n++)
{
/* vide */
}
}
return p - sn;
}
</source>
#include <stdio.h>
 
size_tint longueur(const char *s)
{
int n = -1;
const char *p = s;
if (p)s {!= NULL)
for (; *p; ++p) {}
} n = 0;
while (s[n] != '\0')
return p - s;
{
n++;
}
}
return n;
}
 
int main(void)
{
int nb=0;
const char *C = "Chaine de caracteres constante";
char *C;
const char *C = "Chaine de caracteres constante";
 
nb = longueur(C);
 
printf("Le nombre de caracteres est de : %ud\n", (unsigned)longueur(C)nb);
return 0;
}
</source>
227

modifications