diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2022-08-18 22:01:55 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2022-08-18 22:01:55 (GMT) |
commit | 536baed85dd1d7fd0f99dfe0aa549f11a96afd85 (patch) | |
tree | 91ec7d3eba57073ead30728a10135dd773e82869 | |
parent | d21ff9aca314bdab7156b5f990900735d4dfffd6 (diff) |
Create a function extending strings thanks to a format and its arguments.
-rw-r--r-- | src/common/extstr.c | 43 | ||||
-rw-r--r-- | src/common/extstr.h | 3 |
2 files changed, 46 insertions, 0 deletions
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 <malloc.h> #include <regex.h> +#include <stdio.h> #include <string.h> +#include <stdarg.h> @@ -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 *); |