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

Un livre de Wikilivres.
Contenu supprimé Contenu ajouté
Thierry46 (discussion | contributions)
→‎Lire une ligne longue avec fgets : Solution et remarques
Thierry46 (discussion | contributions)
m Suppression paragraphe inutil
Ligne 1 : Ligne 1 :
{{Exercices en langage C}}
{{Exercices en langage C}}
== Les fonctions ==


[[Catégorie:Exercices en langage C (livre)]]
[[Catégorie:Exercices en langage C (livre)]]

Version du 2 février 2008 à 08:30

Ces exercices concernent l'utilisation des fonctions de la bibliothèque standard du langage C.

Lire une ligne longue avec fgets

Problème à résoudre

La fonction fgets de la bibliothèque standard du langage C permet de lire une chaine de caractère de longueur limitée dans un flux.

Vous allez compléter une fonction lire_ligne répondant au spécifications suivantes :

  • Retour d'une ligne lue dans un flux texte passé en paramètre.
  • Vous éliminerez les caractères de saut de ligne lus.
  • La longueur des lignes lues n'est pas limitée.
  • Contrôle des paramètres et retour des codes d'erreurs systèmes, détection de la fin du fichier.
  • Vous utiliserez au maximum les fonctions de la bibliothèque standard du langage C : allocation mémoire, chaines de caractères...
  • Son prototype est donné par lire_ligne.h.
  • Vous utiliserez le programme de main_lire_ligne.c pour lire_ligne.
  • Vous devrez traiter le fichier test_lire_ligne.txt fourni.
  • Les instructions de compilation et d'édition de lien sont dans les commentaires des fichiers fournis.

Éléments fournis

Solution proposées

Remarques sur l'exercice

  • Le test des paramètres dans la solution est expéditif.
  • Pour obtenir des programmes robustes, le langage C oblige à une gestion pénible des erreurs. Avec le langage Java par exemple, les mécanismes d'exception facilitent la tâche du programmeurs.
  • L'utilisation de l'allocation dynamique de mémoire est risquée : fuite mémoire. Avec le langage Java par exemple, le ramasse miettes (Garbage collector) facilite la tâche du programmeurs.
  • En Java des classes comme String et StringBuffer prennent en charge les chaines de caractères longues.