Les « chaînes alignées » ne sont pas une solution miracle, mais plutôt une évolution significative par rapport au format primitif ASCIIZ, aussi appelé « chaînes à terminateur nul » ou à suffixe, entre autres. Ce n’est pas pour autant une révolution puisqu’elles utilisent des principes connus depuis aussi longtemps que l’ASCIIZ, avant même l’apparition d’UNIX. Elles ont leurs petites particularités, mais devraient compenser la plupart des défauts de ses ancêtres tout en gardant une certaine compatibilité.
C’est un peu prétentieux de débarquer ainsi et prétendre tout changer pour le mieux, mais arrivé à un certain niveau de chaos, il n’y a plus d’autre choix. Je ne suis ni le premier (Poul-Henning Kamp m’a précédé d’une décennie et Joel Spolsky de deux [0]) ni le dernier à râler, mais on en a gros et maintenant, il faut vraiment que ça change !
Les chaînes à terminateur nul, utilisées dès les années 60 dans les mini-ordinateurs [1], sont non seulement pénibles dès qu’on sort un peu de leur utilisation la plus basique, mais en plus elles sont historiquement une grosse source de frustrations, de bugs et surtout de failles, exploitées dès les débuts d’UNIX selon les légendes urbaines. Qui n’a pas déjà été mis en garde sur certaines fonctions qu’il ne faut plus utiliser (gets() ? printf() ? strcpy() ? strcat() ?), mais qui restent pourtant incluses dans les bibliothèques de base pour des raisons historiques ou de compatibilité ? On se...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première