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

aucun résumé des modifications
m (<source> -> <syntaxhighlight> (phab:T237267))
Aucun résumé des modifications
 
Écrire une fonction C calculant la longueur en octets d'une chaîne de caractères, donnée en argument.
 
AÀ titre d'exercice, pas utiliser la fonction <code>strlen()</code> du fichier d'includeentête [[w:en:string.h|string.h]].
 
<div style="width:70%; float:left">{{Boîte déroulante|titre=Solution|contenu =
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 <code>for</code> :
<syntaxhighlight lang="c">
#include <stdlib.h>
/*
Nom ....... : lg.c
Role ...... : Compte le nombre de caractères d'une chainechaîne constante
Compilation : gcc -Wall -o lg.exe lg.c
Exécution . : ./lg.exe
int nb=0;
char *C;
C = "ChaineChaîne de caracterescaractères constante";
 
nb = longueur(C);
 
(void)printf("Le nombre de caracterescaractères est de : %d\n", nb);
return EXIT_SUCCESS;
}
== Longueur d'une chaîne de caractères (par une fonction) ==
Écrire un programme ''lgChaine.c'' :
* qui lit des chaineschaînes de caractères tapées au clavier (flux stdin) ;
* qui calcule la longueur de chaque chaîne entrée et l'affiche ainsi que sa longueur ;
* qui s'arrête si l'utilisateur ne frappe que la touche Entrée ou si le fichier est fini (Ctrl-D tapé par l'utilisateur).
 
Nom ...... : lgChaine.c
Auteur ... : Thierry46
RoleRôle ..... : Lit des chaineschaînes et affiche leur longueur.
Paramètres : non pris en compte.
Code retour : 0 (EXIT_SUCCESS)
Pour produire un executableexécutable avec le compilateur libre GCC :
gcc -Wall -std=c99 -o lgChaine.exe lgChaine.c
Pour exécuter, tapez : ./lgChaine.exe
char *chRetour;
(void)puts("Entrez du texte puis la touche EntreeEntrée,\n"
"ou appuyez seulement sur la touche EntreeEntrée pour arreterarrêter");
do
{
// Lecture de la chainechaîne au clavier \n inclu
chRetour = fgets(reponse, _POSIX_MAX_INPUT, stdin);
if (chRetour != NULL)
{
// Suppression du \n final eventueléventuel
posCr = strrchr(reponse, '\n');
if (posCr != NULL)
}
// Calcule la longueur de la chainechaîne
lgReponse = strlen(reponse);
if (lgReponse != 0)
{
(void)printf("Vous avez entre la chainechaîne :\n"
"\t-\"%s\"\n"
"\t- %zu caracterecaractère%s\n",
reponse, lgReponse,
(lgReponse>1) ? "s" : "");
else if (ferror(stdin))
{
(void)fputs("ProblemeProblème de lecture.\n", stderr);
codeRetour = EXIT_FAILURE;
}