Dans l’article précédent avaient été présentés les problèmes posés par la copie/concaténation de chaînes de caractères en langage C et il avait été montré à la fois combien il était délicat d’effectuer ces deux opérations à l’aide des fonctions de la bibliothèque standard C et combien étaient insatisfaisantes les fonctions proposées pour les remplacer. De plus, il avait été vu que la fragilité de ces fonctions provenait de l’hypothèse suivante (depuis longtemps caduque) : les arguments fournis à ces fonctions sont toujours de bonne qualité, c’est-à-dire que leur valeur a été correctement vérifiée par la fonction appelante.
Pour concevoir des fonctions de copie/concaténation plus robustes, je suis parti du paradigme inverse suivi par les implémenteurs d’appels système (comme open ou mkdir) : ces derniers effectuent des opérations sensibles (pour le bon fonctionnement du système), par conséquent tous leurs arguments sont minutieusement vérifiés et une valeur de retour précise clairement quel a été le résultat de l’exécution. Dans cette deuxième partie, je vais décrire un ensemble de fonctions de copie/concaténation appelées fonctions strtnt qui suivent ce paradigme de manière à rendre plus robustes les programmes qui les utilisent.
Les fonctions strtnt [1] permettent de copier/concaténer aussi bien des chaînes entières que des sous-chaînes. Elles ont été conçues de manière à être plus robustes que toutes les fonctions vues précédemment, plus aisées à comprendre et à manipuler, minimisant les risques d’erreurs liées à la copie et à la concaténation de...
- 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