diff --git a/main.h b/main.h index 8cae3a5..ddf9ce2 100644 --- a/main.h +++ b/main.h @@ -4,6 +4,6 @@ int _printf(const char *format, ...); int _contains(const char *str, char c); int _strlen(const char *str); char *_strcpy(char *dest, char *src); -void append(char *str, char c); +char *append(char *str, char c); #endif diff --git a/printf.c b/printf.c index ede6925..ae09c2f 100644 --- a/printf.c +++ b/printf.c @@ -38,7 +38,7 @@ int _printf(const char *format, ...) break; case 'c': /* add 1 byte and i++ */ c = (char) va_arg(args, int); - append(buffer, c); + buffer = append(buffer, c); BUFF_SIZE += 1; buff_idx += 1; break; diff --git a/strings.c b/strings.c index b4604ce..e431f9c 100644 --- a/strings.c +++ b/strings.c @@ -1,4 +1,5 @@ #include "main.h" +#include /** * _strlen - Takes string and return its length @@ -45,9 +46,19 @@ int _contains(const char *str, char c) * Return: da string but appended */ -void append(char *str, char c) +char* append(char *str, char c) { - int len = _strlen(str); - *(str + len) = c; - *(str + len + 1) = '\0'; + int len, i; + char *new_me; + + len = _strlen(str); + + new_me = malloc(len + 1); + i = -1; + while(*(str + ++i)) + *(new_me + i) = *(str + i); + + *(new_me + i++) = c; + *(new_me + len + 1) = '\0'; + return (new_me); } diff --git a/tests/append.c b/tests/append.c new file mode 100644 index 0000000..f62f16a --- /dev/null +++ b/tests/append.c @@ -0,0 +1,17 @@ +#include "../main.h" +#include + +/** + *main - ensure append work + */ +int main(void) +{ + char *str, c; + + str = "hello"; + c = 'c'; + str = append(str, c); + _printf("%s\n", str); + return (0); + +} diff --git a/tests/char_print.c b/tests/char_print.c index 9bbe388..2f49b0e 100644 --- a/tests/char_print.c +++ b/tests/char_print.c @@ -10,6 +10,6 @@ int main(void) { char c = 'c'; - _printf("cat: %c", c); + _printf("%c\n", c); return (0); }