« 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. |
→Longueur d'une chaîne de caractère : Compément |
||
Ligne 4 : | Ligne 4 : | ||
== Longueur d'une chaîne de caractère == |
== 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. |
Écrire une fonction C calculant la longueur d'une chaîne de caractères, donnée en argument. |
||
Ne pas utiliser la fonction strlen() du fichier d'include [[w:en:string.h|string]]. |
|||
<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 = |
||
Ligne 12 : | Ligne 14 : | ||
<source lang="c"> |
<source lang="c"> |
||
#include <stdlib.h> |
#include <stdlib.h> |
||
int longueur(char *s) |
int longueur(char *s) |
||
{ |
{ |
||
Ligne 48 : | Ligne 50 : | ||
</source> |
</source> |
||
Fichier source : |
Fichier source lg.c : |
||
<source lang="C"> |
<source lang="C"> |
||
/* |
|||
Nom ....... : lg.c |
|||
Role ...... : Compte le nombre de caractères d'une chaine constante |
|||
Compilation : gcc -Wall -o lg.exe lg.c |
|||
Exécution . : ./lg.exe |
|||
*/ |
|||
#include <stdio.h> |
#include <stdio.h> |
||
#include <stdlib.h> |
|||
int longueur(char *s) |
int longueur(char *s) |
||
{ |
{ |
||
int n = -1; |
int n = -1; |
||
if (s != NULL) |
if (s != NULL) |
||
{ |
{ |
||
n = 0; |
n = 0; |
||
while (s[n] != '\0') |
while (s[n] != '\0') |
||
{ |
{ |
||
Ligne 68 : | Ligne 77 : | ||
int main(void) |
int main(void) |
||
{ |
{ |
||
int nb=0; |
int nb=0; |
||
char *C; |
char *C; |
||
C = "Chaine de caracteres constante"; |
C = "Chaine de caracteres constante"; |
||
nb = longueur(C); |
nb = longueur(C); |
||
printf("Le nombre de caracteres est de : %d\n", nb); |
(void)printf("Le nombre de caracteres est de : %d\n", nb); |
||
return |
return EXIT_SUCCESS; |
||
} |
} |
||
</source> |
</source> |
||
Résultats d'exécution : |
|||
<pre> |
|||
MacMini-TM:~/Documents/developpement/c thierry$ ./lg.exe |
|||
Le nombre de caracteres est de : 30 |
|||
</pre> |
|||
}} </div> |
}} </div> |
Version du 12 janvier 2008 à 22:29
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.
Ne pas utiliser la fonction strlen() du fichier d'include string.
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 lg.c :
/*
Nom ....... : lg.c
Role ...... : Compte le nombre de caractères d'une chaine constante
Compilation : gcc -Wall -o lg.exe lg.c
Exécution . : ./lg.exe
*/
#include <stdio.h>
#include <stdlib.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);
(void)printf("Le nombre de caracteres est de : %d\n", nb);
return EXIT_SUCCESS;
}
Résultats d'exécution :
MacMini-TM:~/Documents/developpement/c thierry$ ./lg.exe Le nombre de caracteres est de : 30