0% ont trouvé ce document utile (0 vote)
319 vues8 pages

FT - Printf (FR)

Le projet consiste à recoder la fonction printf() en C, en utilisant des arguments variables. Les étudiants apprendront à structurer leur code et à gérer différentes conversions de types. La réussite du projet dépend de la conformité aux règles de codage et de la gestion de la mémoire.

Transféré par

maxancestaziak
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
319 vues8 pages

FT - Printf (FR)

Le projet consiste à recoder la fonction printf() en C, en utilisant des arguments variables. Les étudiants apprendront à structurer leur code et à gérer différentes conversions de types. La réussite du projet dépend de la conformité aux règles de codage et de la gestion de la mémoire.

Transféré par

maxancestaziak
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ft_printf

Parce que ft_putnbr() et ft_putstr(), c’est pas assez

Résumé:
Ce projet est assez direct. Vous devez recoder printf().
Vous apprendrez principalement à vous servir d’un nombre d’arguments variable.

Version: 9
Table des matières
I Introduction 2

II Règles communes 3

III Partie obligatoire 4

IV Partie bonus 6

V Rendu et peer-evaluation 7

1
Chapitre I

Introduction

La versatilité de printf() en C représente un bon exercice de programmation. Ce


projet est d’une difficulté modérée.

Il vous permettra de découvrir les fonctions variadiques en C.

La clé de la réussite pour ft_printf est un code bien structuré et extensible.

Une fois ce projet validé, vous pourrez ajouter votre ft_printf()


à votre libft afin de l’utiliser dans vos prochains projets C du
cursus.

2
Chapitre II

Règles communes

• Votre projet doit être écrit en C.

• Votre projet doit être codé à la Norme. Si vous avez des fichiers ou fonctions bonus,
celles-ci seront inclues dans la vérification de la norme et vous aurez 0 au projet
en cas de faute de norme.

• Vos fonctions de doivent pas s’arrêter de manière inattendue (segmentation fault,


bus error, double free, etc) mis à part dans le cas d’un comportement indéfini. Si
cela arrive, votre projet sera considéré non fonctionnel et vous aurez 0 au projet.

• Toute mémoire allouée sur la heap doit être libéré lorsque c’est nécessaire. Aucun
leak ne sera toléré.

• Si le projet le demande, vous devez rendre un Makefile qui compilera vos sources
pour créer la sortie demandée, en utilisant les flags -Wall, -Wextra et -Werror.
Votre Makefile ne doit pas relink.

• Si le projet demande un Makefile, votre Makefile doit au minimum contenir les


règles $(NAME), all, clean, fclean et re.

• Pour rendre des bonus, vous devez inclure une règle bonus à votre Makefile qui
ajoutera les divers headers, librairies ou fonctions qui ne sont pas autorisées dans
la partie principale du projet. Les bonus doivent être dans un fichier différent :
_bonus.{c/h}. L’évaluation de la partie obligatoire et de la partie bonus sont
faites séparément.

• Si le projet autorise votre libft, vous devez copier ses sources et son Makefile
associé dans un dossier libft contenu à la racine. Le Makefile de votre projet doit
compiler la librairie à l’aide de son Makefile, puis compiler le projet.

• Nous vous recommandons de créer des programmes de test pour votre projet, bien
que ce travail ne sera pas rendu ni noté. Cela vous donnera une chance de
tester facilement votre travail ainsi que celui de vos pairs.

• Vous devez rendre votre travail sur le git qui vous est assigné. Seul le travail déposé
sur git sera évalué. Si Deepthought doit corriger votre travail, cela sera fait à la fin
des peer-evaluations. Si une erreur se produit pendant l’évaluation Deepthought,
celle-ci s’arrête.

3
Chapitre III

Partie obligatoire

Nom du pro- libftprintf.a


gramme
Fichiers de rendu Makefile, *.h, */*.h, *.c, */*.c
Makefile NAME, all, clean, fclean, re
Fonctions ex- malloc, free, write, va_start,
ternes autorisées va_arg, va_copy, va_end
Libft autorisée Oui
Description Une bibliothèque qui contient ft_printf(), une
fonction imitant la fonction printf() originale

Vous devez implémenter la fonction printf() de la libc.

Le prototype de ft_printf() devra être :

int ft_printf(const char *, ...);

Voici quelques impératifs à respecter :

• Contrairement à la fonction printf() originale, vous ne devez pas gérer de buffer.

• Vous devez gérer les conversions suivantes : cspdiuxX%

• Votre rendu sera comparé à la fonction printf() originale.

• Vous devez utiliser la commande ar pour créer votre bibliothèque.


L’utilisation de la commande libtool est interdite.

• Votre libftprintf.a doit être créé à la racine de votre dépôt.

4
ft_printf Parce que ft_putnbr() et ft_putstr(), c’est pas assez

Vous devez implémenter les conversions suivantes :

• %c Affiche un seul caractère.

• %s Affiche une chaîne de caractères (telle que définie par la convention C).

• %p L’argument de pointeur void * doit être affiché en hexadécimal.

• %d Affiche un nombre décimal (base 10).

• %i Affiche un entier en base 10.

• %u Affiche un nombre décimal non signé (base 10).

• %x Affiche un nombre en hexadécimal (base 16) avec des lettres minuscules.

• %X Affiche un nombre en hexadécimal (base 16) avec des lettres majuscules.

• %% Affiche un signe pourcentage.

5
Chapitre IV

Partie bonus

Vous n’avez pas l’obligation de faire tous les bonus.

Liste de bonus :

• Gérez toute combinaison des drapeaux suivants : ’-0.’ ainsi que la largeur mini-
male du champ avec toutes les conversions.

• Gérez tous les drapeaux suivants : ’# +’ (Oui, l’espace est un drapeau valide)

Si vous envisagez de faire des bonus, il vaut mieux réfléchir à leur


implémentation dès le début afin d’éviter une approche "naïve".

Les bonus ne seront évalués que si la partie obligatoire est


PARFAITE. Par parfaite, nous entendons complète et sans aucun
dysfonctionnement. Si vous n’avez pas réussi TOUS les points de la
partie obligatoire, votre partie bonus ne sera pas prise en compte.

6
Chapitre V

Rendu et peer-evaluation

Rendez votre travail sur votre dépot Git comme d’habitude. Seul le travail présent
sur votre dépot sera évalué en soutenance. Vérifiez bien les noms de vos dossiers et de
vos fichiers afin que ces derniers soient conformes aux demandes du sujet.

Une fois ce projet validé, vous pourrez ajouter votre ft_printf() à votre libft afin
de l’utiliser dans vos prochains projets C du cursus.

Vous aimerez peut-être aussi