質問編集履歴

3

修正追加

2022/03/06 16:08

投稿

pocomi
pocomi

スコア3

test CHANGED
File without changes
test CHANGED
@@ -5,8 +5,6 @@
5
5
 
6
6
  valgrindで調べてみたところ、どうやらこの関数に原因があるみたいですが、
7
7
  原因がなかなか発見できません。直すべき点や解決方法などありましたら教えてほしいです。
8
-
9
- *main関数とmy_substrのコードしか載せてないです。
10
8
 
11
9
  ```C
12
10
  HEAP SUMMARY:
@@ -60,6 +58,47 @@
60
58
  return (res);
61
59
  }
62
60
 
61
+ static char **ssplit(char **res, const char *str, size_t col, const char c)
62
+ {
63
+ size_t i;
64
+ size_t j;
65
+ size_t len;
66
+ char **tmp;
67
+
68
+ i = 0;
69
+ j = -1;
70
+ while (++j < col)
71
+ {
72
+ tmp = res;
73
+ while (str[i] == c)
74
+ i++;
75
+ len = my_strup(str + i, c);
76
+ res[j] = my_substr(str + i, 0, len);
77
+ if (res[j] == NULL)
78
+ return (my_clear(res, j));
79
+ i += len;
80
+ }
81
+ res[j] = NULL;
82
+ free(tmp);
83
+ return (res);
84
+ }
85
+
86
+ char **my_split(char const *str, char c)
87
+ {
88
+ char **ss;
89
+ size_t count;
90
+ char **put_ssplit;
91
+
92
+ if (!str)
93
+ return (NULL);
94
+ count = my_word_count(str, c);
95
+ ss = (char **)malloc(sizeof(char *) * (count + 1));
96
+ if (!ss)
97
+ return (NULL);
98
+ put_ssplit = ssplit(ss, str, count, c);
99
+ return (put_ssplit);
100
+ }
101
+
63
102
  int main(int argc, char **argv)
64
103
  {
65
104
  char *map_read;

2

誤字

2022/03/06 15:45

投稿

pocomi
pocomi

スコア3

test CHANGED
File without changes
test CHANGED
@@ -66,8 +66,7 @@
66
66
  char **after_split;
67
67
  int fd;
68
68
  int lem_i;
69
-
70
- fd = open("test_m", O_RDONLY);
69
+ fd = open(argv[1], O_RDONLY);
71
70
 
72
71
  while(map_read != NULL)
73
72
  {

1

色を付けて見やすくしました

2022/03/06 15:42

投稿

pocomi
pocomi

スコア3

test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,8 @@
8
8
 
9
9
  *main関数とmy_substrのコードしか載せてないです。
10
10
 
11
+ ```C
11
- ```HEAP SUMMARY:
12
+ HEAP SUMMARY:
12
13
  ==5996== in use at exit: 26 bytes in 5 blocks
13
14
  ==5996== total heap usage: 10 allocs, 8 frees, 357 bytes allocated
14
15
  ==5996==
@@ -29,7 +30,7 @@
29
30
  ==5996== To see them, rerun with: --leak-check=full --show-leak-kinds=all
30
31
  ```
31
32
 
32
- ```
33
+ ```C
33
34
  char *my_substr(char const *string, unsigned int start, size_t len)
34
35
  {
35
36
  char *res;