Directory: | ./ |
---|---|
File: | s21_trim.c |
Date: | 2025-07-13 17:59:14 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 24 | 24 | 100.0% |
Branches: | 24 | 24 | 100.0% |
Line | Branch | Exec | Source |
---|---|---|---|
1 | #include "s21_string.h" | ||
2 | |||
3 | int isTrimChar(char toCheck, const char *trim_chars); | ||
4 | |||
5 | 6 | void *s21_trim(const char *src, const char *trim_chars) { | |
6 |
4/4✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 4 times.
|
6 | if (src == S21_NULL || trim_chars == S21_NULL) { |
7 | 2 | return S21_NULL; | |
8 | } | ||
9 | |||
10 | 4 | s21_size_t n = s21_strlen(src); | |
11 | 4 | s21_size_t left = 0, right = n - 1; | |
12 | |||
13 | |||
14 |
4/4✓ Branch 0 taken 15 times.
✓ Branch 1 taken 2 times.
✓ Branch 3 taken 13 times.
✓ Branch 4 taken 2 times.
|
17 | while (left < n && isTrimChar(src[left], trim_chars)) { |
15 | 13 | left++; | |
16 | } | ||
17 | |||
18 | |||
19 |
4/4✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 3 times.
|
6 | while (right >= left && isTrimChar(src[right], trim_chars)) { |
20 | 2 | right--; | |
21 | } | ||
22 | |||
23 | 4 | char *result = S21_NULL; | |
24 |
4/4✓ Branch 0 taken 3 times.
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 1 times.
|
4 | if (n != 0 && left <= right) { |
25 | 2 | result = malloc((right - left + 2) * sizeof(char)); | |
26 |
2/2✓ Branch 0 taken 11 times.
✓ Branch 1 taken 2 times.
|
13 | for (s21_size_t i = left; i <= right; i++) { |
27 | 11 | result[i - left] = src[i]; | |
28 | } | ||
29 | 2 | result[right - left + 1] = '\0'; | |
30 | } else { | ||
31 | 2 | result = malloc(sizeof(char)); | |
32 | 2 | result[0] = '\0'; | |
33 | } | ||
34 | |||
35 | 4 | return result; | |
36 | } | ||
37 | |||
38 | 20 | int isTrimChar(char toCheck, const char *trim_chars) { | |
39 | 20 | int check = 0; | |
40 | |||
41 |
4/4✓ Branch 0 taken 45 times.
✓ Branch 1 taken 16 times.
✓ Branch 2 taken 41 times.
✓ Branch 3 taken 4 times.
|
61 | for (const char *p = trim_chars; *p != '\0' && check == 0; p++) { |
42 |
2/2✓ Branch 0 taken 15 times.
✓ Branch 1 taken 26 times.
|
41 | if (toCheck == *p) { |
43 | 15 | check = 1; | |
44 | } | ||
45 | } | ||
46 | |||
47 | 20 | return check; | |
48 | } | ||
49 |