回答編集履歴
3
再修正
answer
CHANGED
@@ -16,10 +16,6 @@
|
|
16
16
|
if( *str == '\0' ){
|
17
17
|
return NULL;
|
18
18
|
}
|
19
|
-
if( *str == delimiter ){
|
20
|
-
*destination= '\0';
|
21
|
-
return ++str;
|
22
|
-
}
|
23
19
|
while( *str != delimiter && *str != '\0' ){
|
24
20
|
*destination++ = *str++;
|
25
21
|
}
|
2
ソース修正
answer
CHANGED
@@ -1,8 +1,13 @@
|
|
1
|
-
題意にはそぐわないと思いますが・・・
|
1
|
+
題意にはそぐわないと思いますが・・・ヒントになれば
|
2
|
-
dodox86さんのおっしゃる通り「区切り文字が連続している場合」は正常(?)に動作しません^^;
|
3
2
|
また、終端('\0')が見つかっても再度separate()を呼び出します・・・改良の余地あり・・・
|
4
3
|
|
5
4
|
```c
|
5
|
+
usr~/test % ./a.out
|
6
|
+
abc
|
7
|
+
xyz
|
8
|
+
|
9
|
+
|
10
|
+
012
|
6
11
|
usr~/test % cat separate.c
|
7
12
|
#include <stdio.h>
|
8
13
|
//
|
@@ -11,15 +16,21 @@
|
|
11
16
|
if( *str == '\0' ){
|
12
17
|
return NULL;
|
13
18
|
}
|
19
|
+
if( *str == delimiter ){
|
20
|
+
*destination= '\0';
|
21
|
+
return ++str;
|
22
|
+
}
|
14
23
|
while( *str != delimiter && *str != '\0' ){
|
15
24
|
*destination++ = *str++;
|
16
25
|
}
|
26
|
+
*destination= '\0';
|
27
|
+
|
17
28
|
return *str != '\0' ? ++str: str;
|
18
29
|
}
|
19
30
|
|
20
31
|
int main()
|
21
32
|
{
|
22
|
-
char str[]="abc,xyz,012";
|
33
|
+
char str[]="abc,xyz,,,012";
|
23
34
|
char buf[10];
|
24
35
|
const char *pos= str;
|
25
36
|
//
|
@@ -29,9 +40,5 @@
|
|
29
40
|
//
|
30
41
|
return 0;
|
31
42
|
}
|
32
|
-
usr~/test % ./separate
|
33
|
-
abc
|
34
|
-
xyz
|
35
|
-
012
|
36
43
|
usr~/test %
|
37
44
|
```
|
1
追記
answer
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
題意にはそぐわないと思いますが・・・
|
1
2
|
dodox86さんのおっしゃる通り「区切り文字が連続している場合」は正常(?)に動作しません^^;
|
2
3
|
また、終端('\0')が見つかっても再度separate()を呼び出します・・・改良の余地あり・・・
|
3
4
|
|