« Exercices en langage C/Chaines » : différence entre les versions
Contenu supprimé Contenu ajouté
→Longueur d'une chaîne de caractère : source +court |
Annulation des modifications 132007 de 212.152.11.56 (discuter) Retour à la version de Greudin plus lisible. |
||
Ligne 6 : | Ligne 6 : | ||
<div style="width:70%; float:left">{{Boîte déroulante|titre=Solution|contenu = |
<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> |
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>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. |
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. |
||
Ligne 13 : | Ligne 13 : | ||
#include <stdlib.h> |
#include <stdlib.h> |
||
int longueur(char *s) |
|||
{ |
{ |
||
int n = -1; |
|||
if ( |
if (s != NULL) |
||
{ |
|||
n = 0; |
|||
⚫ | |||
⚫ | |||
n++; |
|||
} |
} |
||
} |
} |
||
return |
return n; |
||
} |
} |
||
</source> |
</source> |
||
Ici, on a choisi de retourner la valeur |
Ici, on a choisi de retourner la valeur -1 si le pointeur est nul. |
||
La boucle de recherche de l'élément nul peut être aussi écrite avec un <tt>for</tt>: |
La boucle de recherche de l'élément nul peut être aussi écrite avec un <tt>for</tt>: |
||
Ligne 31 : | Ligne 34 : | ||
#include <stdlib.h> |
#include <stdlib.h> |
||
int longueur(char *s) |
|||
{ |
{ |
||
int n = -1; |
|||
if ( |
if (s != NULL) |
||
{ |
|||
⚫ | |||
for (n = 0; s[n] != '\0'; n++) |
|||
{ |
|||
/* vide */ |
|||
} |
|||
} |
} |
||
return |
return n; |
||
} |
} |
||
</source> |
</source> |
||
Ligne 45 : | Ligne 52 : | ||
#include <stdio.h> |
#include <stdio.h> |
||
int longueur(char *s) |
|||
{ |
{ |
||
int n = -1; |
|||
const char *p = s; |
|||
if ( |
if (s != NULL) |
||
{ |
|||
n = 0; |
|||
while (s[n] != '\0') |
|||
⚫ | |||
{ |
|||
n++; |
|||
} |
|||
} |
|||
return n; |
|||
} |
} |
||
int main(void) |
int main(void) |
||
{ |
{ |
||
int nb=0; |
|||
⚫ | |||
char *C; |
|||
⚫ | |||
nb = longueur(C); |
|||
printf("Le nombre de caracteres est de : %d\n", nb); |
|||
return 0; |
|||
} |
} |
||
</source> |
</source> |
Version du 11 janvier 2008 à 23:27
Les chaînes de caractères
Longueur d'une chaîne de caractère
Écrire une fonction C calculant la longueur d'une chaîne de caractères, donnée en argument.
Solution
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 char *, 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>
int longueur(char *s)
{
int n = -1;
if (s != NULL)
{
n = 0;
while (s[n] != '\0')
{
n++;
}
}
return n;
}
Ici, on a choisi de retourner la valeur -1 si le pointeur est nul.
La boucle de recherche de l'élément nul peut être aussi écrite avec un for:
#include <stdlib.h>
int longueur(char *s)
{
int n = -1;
if (s != NULL)
{
for (n = 0; s[n] != '\0'; n++)
{
/* vide */
}
}
return n;
}
Fichier source :
#include <stdio.h>
int longueur(char *s)
{
int n = -1;
if (s != NULL)
{
n = 0;
while (s[n] != '\0')
{
n++;
}
}
return n;
}
int main(void)
{
int nb=0;
char *C;
C = "Chaine de caracteres constante";
nb = longueur(C);
printf("Le nombre de caracteres est de : %d\n", nb);
return 0;
}