Custom Printf - Implémentation C
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