diff options
Diffstat (limited to 'c08/ex04')
| -rw-r--r-- | c08/ex04/ft_stock_str.h | 8 | ||||
| -rw-r--r-- | c08/ex04/ft_strs_to_tab.c | 59 |
2 files changed, 45 insertions, 22 deletions
diff --git a/c08/ex04/ft_stock_str.h b/c08/ex04/ft_stock_str.h index ccadd2f..2ce09f4 100644 --- a/c08/ex04/ft_stock_str.h +++ b/c08/ex04/ft_stock_str.h @@ -6,18 +6,18 @@ /* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/07/08 16:54:59 by cacharle #+# #+# */ -/* Updated: 2019/07/08 16:56:02 by cacharle ### ########.fr */ +/* Updated: 2019/07/11 14:14:13 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef FT_STOCK_STR_H -#define FT_STOCK_STR_H +# define FT_STOCK_STR_H -typedef struct s_stock_str +typedef struct s_stock_str { int size; char *str; char *copy; -} t_stock_str; +} t_stock_str; #endif diff --git a/c08/ex04/ft_strs_to_tab.c b/c08/ex04/ft_strs_to_tab.c index 67a0304..f6fbfaf 100644 --- a/c08/ex04/ft_strs_to_tab.c +++ b/c08/ex04/ft_strs_to_tab.c @@ -6,35 +6,58 @@ /* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/07/07 17:15:32 by cacharle #+# #+# */ -/* Updated: 2019/07/08 17:10:21 by cacharle ### ########.fr */ +/* Updated: 2019/07/14 11:12:08 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include <stdlib.h> #include "ft_stock_str.h" -struct s_stock_str *ft_strs_to_tab(int ac, char **av) +int ft_strlen(char *str) +{ + int counter; + + counter = 0; + while (str[counter]) + counter++; + return (counter); +} + +char *ft_strdup(char *src) +{ + int i; + char *dup_ptr; + + dup_ptr = (char*)malloc(sizeof(char) * ft_strlen(src)); + if (dup_ptr == NULL) + return (NULL); + i = 0; + while (src[i]) + { + dup_ptr[i] = src[i]; + i++; + } + dup_ptr[i] = '\0'; + return (dup_ptr); +} + +struct s_stock_str *ft_strs_to_tab(int ac, char **av) { int i; - char *copy; t_stock_str tmp_stock; - t_stock_str *strs_stocks + t_stock_str *strs_stocks; - strs_stocks = malloc(sizeof(t_stock_str) * ac); - while (ac-- > 0) + if ((strs_stocks = malloc(sizeof(t_stock_str) * (ac + 1))) == NULL) + return (NULL); + i = 0; + while (i < ac) { - i = 0 - while (av[ac][i]) - i++; - tmp_stock = malloc(sizeof(t_stock_str)); - tmp_stock->size = i; - tmp_stock->str = av[ac]; - copy = malloc(sizeof(char) * i); - i = -1; - while (av[ac][i++]) - copy[i] = av[ac][i]; - tmp_stock->copy = copy; - strs_stocks[ac] = tmp_stock; + tmp_stock.size = ft_strlen(av[i]); + tmp_stock.str = av[i]; + if ((tmp_stock.copy = ft_strdup(av[i])) == NULL) + return (NULL); + strs_stocks[i++] = tmp_stock; } + strs_stocks[ac].str = 0; return (strs_stocks); } |
