回答編集履歴

3

変更

2017/07/27 14:52

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -28,9 +28,9 @@
28
28
 
29
29
  str_a=malloc(strlen(param[1])+1);
30
30
 
31
+ str_b=param[2];
32
+
31
33
  memcpy(str_a,param[1],strlen(param[1])+1);
32
-
33
- str_b=param[2];
34
34
 
35
35
  } else {
36
36
 
@@ -42,9 +42,11 @@
42
42
 
43
43
  char* res = NULL;
44
44
 
45
- res = my_strconcat(str_a, str_b);
45
+ printf("%s", my_strconcat(str_a, str_b));
46
46
 
47
+
48
+
47
- printf("%s", res);
49
+ free(str_a);
48
50
 
49
51
  return(0);
50
52
 
@@ -62,13 +64,13 @@
62
64
 
63
65
  int len_b = 0;
64
66
 
67
+
68
+
65
69
  len_a = strlen(a);
66
70
 
67
71
  len_b = strlen(b);
68
72
 
69
-
70
-
71
- temp = realloc(a, len_a + len_b +1);
73
+ temp = realloc(a, len_a + len_b);
72
74
 
73
75
 
74
76
 
@@ -92,27 +94,17 @@
92
94
 
93
95
 
94
96
 
95
- while(1) {
97
+ while(*b != '\0') {
96
98
 
97
- if (*b != '\0') {
99
+ *a = *b; // (1)ここで第一引数のポインタ変数に第二引数の文字を代入(コピー)して文字列を拡張
98
100
 
99
- *a = *b; // (1)ここで第一引数のポインタ変数に第二引数の文字を代入(コピー)して文字列を拡張
101
+ a++;
100
102
 
101
- a++;
102
-
103
- b++;
103
+ b++;
104
-
105
- } else {
106
-
107
- break;
108
-
109
- }
110
104
 
111
105
  }
112
106
 
113
- *a = '\0';
107
+ *a = *b;
114
-
115
- // free(a);
116
108
 
117
109
  return (source_p);
118
110
 

2

変更

2017/07/27 14:52

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -1,4 +1,4 @@
1
- パラメータの領域は直接上位のアドレスを指していますのでreallocするとエラーになると思います。ですのでrialloc用に領域を確保します。
1
+ パラメータの領域は直接上位のアドレスを指していますのでreallocするとエラーになると思います。ですのでrealloc用に領域を確保します。
2
2
 
3
3
  ```c
4
4
 

1

変更

2017/07/27 14:42

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -26,9 +26,9 @@
26
26
 
27
27
  if (count > 2) {
28
28
 
29
- str_a=malloc(strlen(param[1]));
29
+ str_a=malloc(strlen(param[1])+1);
30
30
 
31
- memcpy(str_a,param[1],strlen(param[1]));
31
+ memcpy(str_a,param[1],strlen(param[1])+1);
32
32
 
33
33
  str_b=param[2];
34
34