From 536baed85dd1d7fd0f99dfe0aa549f11a96afd85 Mon Sep 17 00:00:00 2001 From: Cyrille Bagard Date: Fri, 19 Aug 2022 00:01:55 +0200 Subject: Create a function extending strings thanks to a format and its arguments. --- src/common/extstr.c | 43 +++++++++++++++++++++++++++++++++++++++++++ src/common/extstr.h | 3 +++ 2 files changed, 46 insertions(+) diff --git a/src/common/extstr.c b/src/common/extstr.c index 9142bd9..3041be0 100644 --- a/src/common/extstr.c +++ b/src/common/extstr.c @@ -26,7 +26,9 @@ #include #include +#include #include +#include @@ -96,6 +98,47 @@ char *strnadd(char *str1, const char *str2, size_t n) /****************************************************************************** * * * Paramètres : str1 = chaîne de caractères à compléter. * +* fmt = description de la forme de la chaîne complémentaire. * +* ... = éléments associés au format à construire. * +* * +* Description : Complète une chaîne de caractères avec une chaîne à formater.* +* * +* Retour : Chaîne de caractères complétée, à libérer de la mémoire. * +* * +* Remarques : - * +* * +******************************************************************************/ + +char *straddfmt(char *str1, const char *fmt, ...) +{ + char *result; /* Chaîne à renvoyer */ + va_list ap; /* Liste des arguments */ + char *tmp; /* Conservation temporaire */ + int ret; /* Bilan intermédiaire */ + + va_start(ap, fmt); + + ret = vasprintf(&tmp, fmt, ap); + + if (ret != -1) + { + result = stradd(str1, tmp); + free(tmp); + } + + else + result = str1; + + va_end(ap); + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : str1 = chaîne de caractères à compléter. * * str2 = chaîne de caractères à ajouter. * * * * Description : Fait précéder une chaîne de caractères par une autre. * diff --git a/src/common/extstr.h b/src/common/extstr.h index 1c39603..c4e671e 100644 --- a/src/common/extstr.h +++ b/src/common/extstr.h @@ -37,6 +37,9 @@ char *stradd(char *, const char *); /* Complète une chaîne de caractères avec une autre. */ char *strnadd(char *, const char *, size_t); +/* Complète une chaîne de caractères avec une chaîne à formater. */ +char *straddfmt(char *, const char *, ...); + /* Fait précéder une chaîne de caractères par une autre. */ char *strprep(char *, const char *); -- cgit v0.11.2-87-g4458