Écrire un programme
lgChaine.c :
- qui lit des chaines 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).
Vous utiliserez :
- une des fonctions déclarée dans stdio.h.
- la fonction
strlen
, ainsi que d'autres si nécessaire, déclarée dans string.h.
Solution
/*
Nom ...... : lgChaine.c
Auteur ... : Thierry46
Role ..... : Lit des chaines et affiche leur longueur.
Paramètres : non pris en compte.
Code retour : 0 (EXIT_SUCCESS)
Pour produire un executable avec le compilateur libre GCC :
gcc -Wall -std=c99 -o lgChaine.exe lgChaine.c
Pour exécuter, tapez : ./lgChaine.exe
Version : 1.0 du 14/1/2008
Licence : GNU GPL
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
int main(void)
{
char reponse[_POSIX_MAX_INPUT];
size_t lgReponse = 0;
int codeRetour = EXIT_SUCCESS;
char *posCr;
char *chRetour;
(void)puts("Entrez du texte puis la touche Entree,\n"
"ou appuyez seulement sur la touche Entree pour arreter");
do
{
// Lecture de la chaine au clavier \n inclu
chRetour = fgets(reponse, _POSIX_MAX_INPUT, stdin);
if (chRetour != NULL)
{
// Suppression du \n final eventuel
posCr = strrchr(reponse, '\n');
if (posCr != NULL)
{
*posCr = '\0';
}
// Calcule la longueur de la chaine
lgReponse = strlen(reponse);
if (lgReponse != 0)
{
(void)printf("Vous avez entre la chaine :\n"
"\t-\"%s\"\n"
"\t- %zu caractere%s\n",
reponse, lgReponse,
(lgReponse>1) ? "s" : "");
}
}
else if (ferror(stdin))
{
(void)fputs("Probleme de lecture.\n", stderr);
codeRetour = EXIT_FAILURE;
}
} while ((chRetour != NULL) && (lgReponse != 0));
return codeRetour;
}
Aucun commentaire:
Enregistrer un commentaire