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