diff options
Diffstat (limited to 'src/common/extstr.c')
-rw-r--r-- | src/common/extstr.c | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/src/common/extstr.c b/src/common/extstr.c index 8249515..309f487 100644 --- a/src/common/extstr.c +++ b/src/common/extstr.c @@ -47,9 +47,46 @@ char *stradd(char *str1, const char *str2) { char *result; /* Chaîne à renvoyer */ - result = (char *)realloc(str1, (strlen(str1) + strlen(str2) + 1) * sizeof(char)); + if (str1 == NULL) + result = strdup(str2); + + else + { + result = (char *)realloc(str1, (strlen(str1) + strlen(str2) + 1) * sizeof(char)); + strcat(result, str2); + } + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : str1 = chaîne de caractères à compléter. * +* str2 = chaîne de caractères à ajouter. * +* n = taille de la seconde chaîne. * +* * +* Description : Complète une chaîne de caractères avec une autre. * +* * +* Retour : Chaîne de caractères complétée, à libérer de la mémoire. * +* * +* Remarques : - * +* * +******************************************************************************/ + +char *strnadd(char *str1, const char *str2, size_t n) +{ + char *result; /* Chaîne à renvoyer */ - strcat(result, str2); + if (str1 == NULL) + result = strndup(str2, n); + + else + { + result = (char *)realloc(str1, (strlen(str1) + n + 1) * sizeof(char)); + strncat(result, str2, n); + } return result; |