Peu de fonctions de la bibliothèque standard C auront cumulé autant de ratés (noms piégés, conception peu soignée, fonctionnement inconsistant, ambiguïté, sécurité défaillante) que les fonctions dédiées (ou supposées dédiées) à la copie ou concaténation de chaînes de caractères. Il s’agit des fonctions strcpy/strcat et strncpy/strncat. Il a été suggéré d’utiliser à leur place d’autres fonctions comme le couple strlcpy/strlcat ou bien la fonction snprintf mais au final, plusieurs problèmes restent mal ou non résolus.
Cet article sera décomposé en deux parties. Dans la première partie seront décrits les problèmes posés par les chaînes de caractères en langage C et les problèmes posés par les principales fonctions à disposition du programmeur pour réaliser ces deux opérations, à savoir la copie et la concaténation de chaînes.
Dans une deuxième partie, un nouvel ensemble de fonctions beaucoup plus robustes appelées fonctions strtnt sera décrit puis comparé avec les fonctions analysées dans cette partie de l’article. J’ai conçu cet ensemble de fonctions, lassé de voir et revoir les mêmes défauts dans les exemples, voire les « conseils » donnés par les programmeurs experts en C !
Les chaînes de caractères en langage C sont particulièrement délicates à manipuler et sont la source d’un grand nombre d’erreurs de programmation. Précisons, tout d’abord, que seules les chaînes de caractères classiques (les C-Strings) seront abordées (les caractères...
- 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