Skip to content

Commit e28e897

Browse files
committed
New functions and utils
1 parent f520508 commit e28e897

13 files changed

+149
-33
lines changed

Makefile

+5-5
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
# By: sadoming <[email protected]> +#+ +:+ +#+ #
77
# +#+#+#+#+#+ +#+ #
88
# Created: 2024/10/01 11:55:07 by sadoming #+# #+# #
9-
# Updated: 2024/10/14 16:55:55 by sadoming ### ########.fr #
9+
# Updated: 2025/01/15 19:32:47 by sadoming ### ########.fr #
1010
# #
1111
# **************************************************************************** #
1212

@@ -52,7 +52,7 @@ STR_SRC = ft_split.c ft_strchr.c ft_strcmp.c ft_strcpy.c ft_strcut.c\
5252
ft_strinter.c ft_strjoin.c ft_strlen.c ft_strstr.c ft_strtrim.c\
5353
ft_substr.c ft_apears_in.c ft_strremove.c
5454

55-
ARR_SRC = ft_arrmap.c ft_arrpop.c ft_arrpush.c ft_arrsize.c
55+
ARR_SRC = ft_arrdup.c ft_arrpop.c ft_arrpush.c ft_arrsize.c
5656

5757
LST_SRC = ft_lstadd_back_bonus.c ft_lstadd_front_bonus.c ft_lstclear_bonus.c\
5858
ft_lstdelone_bonus.c ft_lstiter_bonus.c ft_lstlast_bonus.c\
@@ -96,12 +96,12 @@ author:
9696
#-------------------------------------------------------------#
9797
#-------------------------------------------------------------#
9898
norm:
99-
@echo "\n\033[1;93m~ Norminette:\n"
99+
@echo "\n\033[0;93m~ Norminette:\n"
100100
@norminette -R CheckForbiddenSourceHeader
101101
@echo "\n~~~~~~~~~~~~~~~~~~~~~~\n"
102102
@norminette
103-
@echo "\033[1;32m\n ~ Norminette:\t~ OK\n"
104-
@echo "~~~~~~~~~~~~~~~~~~~~~~\n"
103+
@echo "\033[0;32m\n ~ Norminette:\t~ OK\n"
104+
@echo "~~~~~~~~~~~~~~~~~~~~~~\033[0;97m\n"
105105
#-------------------------------------------------------------#
106106
#-------------------------------------------------------------#
107107
# ******************************************************************************* #

inc/arrays.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: sadoming <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2024/10/01 18:09:37 by sadoming #+# #+# */
9-
/* Updated: 2024/10/14 13:47:15 by sadoming ### ########.fr */
9+
/* Updated: 2025/01/15 20:07:23 by sadoming ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -19,10 +19,11 @@
1919
size_t arrsize(void **s);
2020
size_t arrsize_str(char **s);
2121

22-
void **arrmap(void **org);
22+
void **arrdup(void **org);
2323
void **arrpop(void **org, size_t pop);
2424
void **arrpush(void **org, void *add);
2525

26+
char **ft_arr_strcreate(size_t heigth, size_t width);
2627
char **ft_strarrdup(char **to_copy);
2728

2829
#endif

inc/colors.h

+4-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: sadoming <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2024/02/21 19:02:46 by sadoming #+# #+# */
9-
/* Updated: 2024/10/14 16:55:26 by sadoming ### ########.fr */
9+
/* Updated: 2024/10/29 19:26:54 by sadoming ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -34,4 +34,7 @@
3434
/* DEFFAULT */
3535
# define D "\033[0m"
3636

37+
/* CLEAN SCREEN */
38+
# define CLEAN "\033[2J\033[H"
39+
3740
#endif

inc/searchers.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: sadoming <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2024/02/22 16:35:51 by sadoming #+# #+# */
9-
/* Updated: 2024/10/01 17:55:56 by sadoming ### ########.fr */
9+
/* Updated: 2024/12/05 18:31:36 by sadoming ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -25,5 +25,7 @@ size_t ft_search_str(char **arr, char *to_search);
2525

2626
size_t ft_chinstr(char *str, char ch);
2727
size_t ft_strinstr(const char *haystack, const char *needle);
28+
size_t ft_strinarr_iden(char **arr, char *to_search);
29+
size_t ft_strinarr_cnd(char **arr, char *to_search);
2830

2931
#endif

inc/string_utils.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: sadoming <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2024/02/22 16:47:20 by sadoming #+# #+# */
9-
/* Updated: 2024/10/01 17:59:27 by sadoming ### ########.fr */
9+
/* Updated: 2025/01/15 19:42:53 by sadoming ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -28,12 +28,13 @@ char *ft_strtrim(const char *s1, const char *set);
2828
char *ft_strtrim_inside(char *input, char trim);
2929
char *ft_strremove(char *str, const char *rem);
3030
char *ft_substr(const char*s, unsigned int start, size_t len);
31+
char *my_substr(char *s, size_t start, size_t len);
3132

3233
char *ft_strjoin(const char *s1, const char *s2);
3334
char *ft_strjoin_free_fst(char *s1, const char *s2);
3435
char *ft_strjoin_free_sec(const char *s1, char *s2);
3536

36-
char *ft_strinter(const char *str, const char *inter, size_t pos);
37+
char *ft_strinter(char *str, char *inter, size_t pos);
3738

3839
char **ft_split(const char *s, char c);
3940

src/arrays/ft_arrcreate.c

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/* ************************************************************************** */
2+
/* */
3+
/* ::: :::::::: */
4+
/* ft_arrcreate.c :+: :+: :+: */
5+
/* +:+ +:+ +:+ */
6+
/* By: sadoming <[email protected]> +#+ +:+ +#+ */
7+
/* +#+#+#+#+#+ +#+ */
8+
/* Created: 2025/01/15 20:03:48 by sadoming #+# #+# */
9+
/* Updated: 2025/01/15 20:07:02 by sadoming ### ########.fr */
10+
/* */
11+
/* ************************************************************************** */
12+
13+
#include "../../inc/arrays.h"
14+
#include "../../inc/memory.h"
15+
16+
char **ft_arr_strcreate(size_t heigth, size_t width)
17+
{
18+
char **new_arr;
19+
20+
if (!heigth || !width)
21+
return (NULL);
22+
new_arr = ft_calloc(heigth, sizeof(char *));
23+
if (!new_arr)
24+
return (NULL);
25+
while (--heigth)
26+
{
27+
new_arr[heigth] = ft_calloc(width, sizeof(char));
28+
if (!new_arr)
29+
{
30+
new_arr = ft_free_arr (new_arr);
31+
return (NULL);
32+
}
33+
}
34+
return (new_arr);
35+
}

src/arrays/ft_arrmap.c renamed to src/arrays/ft_arrdup.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
/* ************************************************************************** */
22
/* */
33
/* ::: :::::::: */
4-
/* ft_arrmap.c :+: :+: :+: */
4+
/* ft_arrdup.c :+: :+: :+: */
55
/* +:+ +:+ +:+ */
66
/* By: sadoming <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2024/10/14 12:58:35 by sadoming #+# #+# */
9-
/* Updated: 2024/10/14 16:53:54 by sadoming ### ########.fr */
9+
/* Updated: 2025/01/15 19:32:14 by sadoming ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -17,7 +17,7 @@
1717
* Make a copy of org
1818
* *Return NULL if !org || !size of org
1919
*/
20-
void **arrmap(void **org)
20+
void **arrdup(void **org)
2121
{
2222
char **copy;
2323
size_t cnt;

src/arrays/ft_arrpop.c

+13-7
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,22 @@
66
/* By: sadoming <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2024/10/14 12:42:13 by sadoming #+# #+# */
9-
/* Updated: 2024/10/14 13:47:11 by sadoming ### ########.fr */
9+
/* Updated: 2025/02/28 13:20:11 by sadoming ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

1313
#include "../../inc/arrays.h"
1414
#include "../../inc/memory.h"
1515

16-
/*
17-
* Pop `add` into a new array (on last position)
18-
* And free the original array.
19-
* *Free the original if !size || pop >= size of org
20-
*/
16+
/* Pop an element from an array
17+
* - Return a new array without the element
18+
* ** Free the original if !size || size >= arrsize(org)
19+
* *** `size` is the size of the new array
20+
* *** (If size is 0, the array will be freed)
21+
* ** Return Original if pop >= arrsize(org)
22+
* *** `pop` is the index of the element to pop
23+
* ** Return NULL if !new_arr (Memory Allocation Error)
24+
*/
2125
void **arrpop(void **org, size_t pop)
2226
{
2327
char **new_arr;
@@ -29,11 +33,13 @@ void **arrpop(void **org, size_t pop)
2933
i = -1;
3034
new_arr = NULL;
3135
size = arrsize(org) - 1;
32-
if (!size || pop >= arrsize(org))
36+
if (!size || size >= arrsize(org))
3337
{
3438
org = ft_free_arr(org);
3539
return (NULL);
3640
}
41+
if (pop >= arrsize(org))
42+
return (org);
3743
new_arr = ft_calloc(sizeof(char *), size + 1);
3844
if (!new_arr)
3945
return (NULL);

src/arrays/ft_arrpush.c

+4-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: sadoming <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2024/10/01 18:55:30 by sadoming #+# #+# */
9-
/* Updated: 2024/10/14 13:47:07 by sadoming ### ########.fr */
9+
/* Updated: 2024/12/05 16:59:00 by sadoming ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -16,7 +16,8 @@
1616
/*
1717
* Push `add` into a new array (on last position)
1818
* And free the original array.
19-
* *Return org if !add || !size of org
19+
* - Return org if !add
20+
* - If !size, push add into a new array (size 1)
2021
*/
2122
void **arrpush(void **org, void *add)
2223
{
@@ -27,7 +28,7 @@ void **arrpush(void **org, void *add)
2728
i = -1;
2829
new_arr = NULL;
2930
size = arrsize(org);
30-
if (!size || !add)
31+
if (!add)
3132
return (org);
3233
new_arr = ft_calloc(sizeof(char *), size + 2);
3334
if (!new_arr)

src/ft_str/ft_apears_in.c

+45-1
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@
66
/* By: sadoming <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2024/05/07 16:57:29 by sadoming #+# #+# */
9-
/* Updated: 2024/10/01 17:12:23 by sadoming ### ########.fr */
9+
/* Updated: 2024/12/05 18:34:18 by sadoming ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

1313
#include <stdlib.h>
14+
#include "../../inc/string_utils.h"
15+
#include "../../inc/searchers.h"
1416

1517
/*
1618
* How many times appears `ch` in `str`
@@ -62,3 +64,45 @@ size_t ft_strinstr(const char *haystack, const char *needle)
6264
}
6365
return (times_ap);
6466
}
67+
68+
/*
69+
* How many times appears `to_search` in arr
70+
* - Must be identicall to count it
71+
*/
72+
size_t ft_strinarr_iden(char **arr, char *to_search)
73+
{
74+
size_t cnt;
75+
size_t pos;
76+
77+
cnt = 0;
78+
pos = -1;
79+
if (!arr || !to_search)
80+
return (0);
81+
while (arr[++pos])
82+
{
83+
if (my_strcmp(arr[pos], to_search))
84+
cnt++;
85+
}
86+
return (cnt);
87+
}
88+
89+
/*
90+
* How many times appears `to_search` in arr
91+
* - On any coincidence of to_search in arr
92+
*/
93+
size_t ft_strinarr_cnd(char **arr, char *to_search)
94+
{
95+
size_t cnt;
96+
size_t pos;
97+
98+
cnt = 0;
99+
pos = -1;
100+
if (!arr || !to_search)
101+
return (0);
102+
while (arr[++pos])
103+
{
104+
if (ft_strstr((const char *)arr[pos], (const char *)to_search))
105+
cnt++;
106+
}
107+
return (cnt);
108+
}

src/ft_str/ft_strinter.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: sadoming <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2023/10/09 15:29:20 by sadoming #+# #+# */
9-
/* Updated: 2024/10/14 13:49:32 by sadoming ### ########.fr */
9+
/* Updated: 2024/12/05 20:12:28 by sadoming ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -47,7 +47,7 @@ static char *ft_strnext(const char *str, char *to_fill, size_t pos)
4747
* if str is NULL, return a strdup of inter
4848
* if inter is NULL, return a strdup of str
4949
*/
50-
char *ft_strinter(const char *str, const char *inter, size_t pos)
50+
char *ft_strinter(char *str, char *inter, size_t pos)
5151
{
5252
size_t len_s;
5353
size_t len_i;

src/ft_str/ft_strstr.c

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: sadoming <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2023/08/30 17:57:36 by sadoming #+# #+# */
9-
/* Updated: 2024/10/01 17:05:12 by sadoming ### ########.fr */
9+
/* Updated: 2025/02/28 13:23:20 by sadoming ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -78,6 +78,8 @@ char *ft_strnstr(const char *haystack, const char *needle, size_t len)
7878
* if !to_search || !arr -> return 0
7979
* if coincidence, return the arr pos on encountered
8080
* if no coincidence, return arr len
81+
* ** arr must be NULL terminated
82+
* ** It will return the first coincidence
8183
*/
8284
size_t ft_search_str(char **arr, char *to_search)
8385
{

src/ft_str/ft_substr.c

+26-5
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,13 @@
66
/* By: sadoming <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2023/05/19 17:52:22 by sadoming #+# #+# */
9-
/* Updated: 2024/10/01 17:16:38 by sadoming ### ########.fr */
9+
/* Updated: 2025/01/15 20:26:36 by sadoming ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

1313
#include "../../inc/lenght.h"
1414

15-
/*
16-
* Creates a new *char cuted by `start`and `len`
17-
* if len >
18-
*/
15+
/* Creates a new *char cuted by `start` and `len` */
1916
char *ft_substr(const char *s, unsigned int start, size_t len)
2017
{
2118
size_t cnt;
@@ -40,3 +37,27 @@ char *ft_substr(const char *s, unsigned int start, size_t len)
4037
sub[cnt] = '\0';
4138
return (sub);
4239
}
40+
41+
/* Creates a new *char cuted by `start` and `len` */
42+
char *my_substr(char *s, size_t start, size_t len)
43+
{
44+
size_t cnt;
45+
char *sub;
46+
47+
if (start >= ft_strlen(s))
48+
start = 0;
49+
if (len >= ft_strlen(s + start))
50+
len = ft_strlen(s) - start;
51+
sub = malloc(len + 1);
52+
if (!sub)
53+
return (NULL);
54+
cnt = 0;
55+
while (cnt < len && s[start])
56+
{
57+
sub[cnt] = s[start];
58+
start++;
59+
cnt++;
60+
}
61+
sub[cnt] = '\0';
62+
return (sub);
63+
}

0 commit comments

Comments
 (0)