回答編集履歴

3

再修正

2018/05/08 13:12

投稿

cateye
cateye

スコア6851

test CHANGED
@@ -31,14 +31,6 @@
31
31
  if( *str == '\0' ){
32
32
 
33
33
  return NULL;
34
-
35
- }
36
-
37
- if( *str == delimiter ){
38
-
39
- *destination= '\0';
40
-
41
- return ++str;
42
34
 
43
35
  }
44
36
 

2

ソース修正

2018/05/08 13:11

投稿

cateye
cateye

スコア6851

test CHANGED
@@ -1,12 +1,22 @@
1
- 題意にはそぐわないと思いますが・・・
1
+ 題意にはそぐわないと思いますが・・・ヒントになれば
2
-
3
- dodox86さんのおっしゃる通り「区切り文字が連続している場合」は正常(?)に動作しません^^;
4
2
 
5
3
  また、終端('\0')が見つかっても再度separate()を呼び出します・・・改良の余地あり・・・
6
4
 
7
5
 
8
6
 
9
7
  ```c
8
+
9
+ usr~/test % ./a.out
10
+
11
+ abc
12
+
13
+ xyz
14
+
15
+
16
+
17
+
18
+
19
+ 012
10
20
 
11
21
  usr~/test % cat separate.c
12
22
 
@@ -24,11 +34,23 @@
24
34
 
25
35
  }
26
36
 
37
+ if( *str == delimiter ){
38
+
39
+ *destination= '\0';
40
+
41
+ return ++str;
42
+
43
+ }
44
+
27
45
  while( *str != delimiter && *str != '\0' ){
28
46
 
29
47
  *destination++ = *str++;
30
48
 
31
49
  }
50
+
51
+ *destination= '\0';
52
+
53
+
32
54
 
33
55
  return *str != '\0' ? ++str: str;
34
56
 
@@ -40,7 +62,7 @@
40
62
 
41
63
  {
42
64
 
43
- char str[]="abc,xyz,012";
65
+ char str[]="abc,xyz,,,012";
44
66
 
45
67
  char buf[10];
46
68
 
@@ -60,14 +82,6 @@
60
82
 
61
83
  }
62
84
 
63
- usr~/test % ./separate
64
-
65
- abc
66
-
67
- xyz
68
-
69
- 012
70
-
71
85
  usr~/test %
72
86
 
73
87
  ```

1

追記

2018/05/08 13:08

投稿

cateye
cateye

スコア6851

test CHANGED
@@ -1,3 +1,5 @@
1
+ 題意にはそぐわないと思いますが・・・
2
+
1
3
  dodox86さんのおっしゃる通り「区切り文字が連続している場合」は正常(?)に動作しません^^;
2
4
 
3
5
  また、終端('\0')が見つかっても再度separate()を呼び出します・・・改良の余地あり・・・