Custom Printf - Implémentation C
2023-09-01Programmation Système

Custom Printf - Implémentation C

C (GNU89)gccVariadic FunctionsStandard I/OUbuntu 20.04 LTS+1

01. Vue d'ensemble

Réimplémentation complète de printf en C, avec gestion de nombreux spécificateurs et respect des standards Betty sur Ubuntu 20.04.

Objectif

Comprendre en profondeur les mécanismes internes de la libc en recréant printf (parseur, conversions, variadique).

Résultat

Implémentation modulaire robuste de printf couvrant 13+ spécificateurs et compilée avec des flags stricts gcc.

02. Stack technique

C (GNU89)
gcc
Variadic Functions
Standard I/O
Ubuntu 20.04 LTS
Betty Style

03. 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

04. Pipeline d'ingénierie

01

Définition des prototypes et structures dans main.h

02

Développement de la boucle centrale de parsing de format dans _printf

03

Implémentation de chaque spécificateur via des fonctions réutilisables

04

Ajout de la gestion des modificateurs de longueur, largeur de champ, précision et flags dans modifiers.c

05

Compilation et tests avec flags gcc stricts sur Ubuntu 20.04 LTS

05. Défis & exécution

Contrainte

Parser des chaînes de format incluant combinaisons de flags, largeur, précision et spécificateurs

Exécution

Conception d'une table de dispatch modulaire associant chaque spécificateur à sa fonction handler.

Contrainte

Gérer de manière sûre les arguments variadiques pour tous les types pris en charge

Exécution

Utilisation correcte de va_list, va_start, va_arg et va_end dans toutes les branches de conversion.

Contrainte

Implémenter des spécificateurs non standards comme %b (binaire), %r (reverse) et %R (ROT13)

Exécution

Séparation du code en modules helpers.c, conversion.c et modifiers.c pour la maintenabilité et la conformité Betty.

Retour à l'archive.

Emmanuel Adoum | Portfolio