
2023Programmation Système
Custom Printf - Implémentation C
Réimplémentation complète de printf en C, avec gestion de nombreux spécificateurs et respect des standards Betty sur Ubuntu 20.04.
Le Défi
- Parser des chaînes de format incluant combinaisons de flags, largeur, précision et spécificateurs
- Gérer de manière sûre les arguments variadiques pour tous les types pris en charge
- Implémenter des spécificateurs non standards comme %b (binaire), %r (reverse) et %R (ROT13)
La Solution
- Conception d'une table de dispatch modulaire associant chaque spécificateur à sa fonction handler.
- Utilisation correcte de va_list, va_start, va_arg et va_end dans toutes les branches de conversion.
- Séparation du code en modules helpers.c, conversion.c et modifiers.c pour la maintenabilité et la conformité Betty.
Fonctionnalités Clés
- Support de %c, %s, %%, %d, %i, %u, %o, %x, %X, %p, %S, %b, %r, %R
- Structure modulaire (helpers.c, conversion.c, modifiers.c)
- Gestion des modificateurs de longueur, largeur de champ, précision et flags
- Compilation avec -Wall -Werror -Wextra -pedantic -std=gnu89
- Conforme aux guidelines Betty C
Processus
Phase 01
Définition des prototypes et structures dans main.h
Phase 02
Développement de la boucle centrale de parsing de format dans _printf
Phase 03
Implémentation de chaque spécificateur via des fonctions réutilisables
Phase 04
Ajout de la gestion des modificateurs de longueur, largeur de champ, précision et flags dans modifiers.c
Phase 05
Compilation et tests avec flags gcc stricts sur Ubuntu 20.04 LTS