/* strtok는 구분자 사이에 내용이 없으면 그냥 지나감 */
/* strsep는 구분자 사이에 내용이 없으면 빈 문자열 반환 */
#include <stdio.h>
#include <string.h>
char *strsep(register char **stringp, register const char *delim);
int main()
{
char Buff[256];
char *from;
char *value;
memset(Buff, 0x00, sizeof(Buff));
memcpy(Buff, "a|b|c||e|", sizeof(Buff)-1);
from = Buff;
value = strsep(&from, "|");
printf("%s\n", value);
value = strsep(&from, "|");
printf("%s\n", value);
value = strsep(&from, "|");
printf("%s\n", value);
value = strsep(&from, "|");
printf("%s\n", value);
value = strsep(&from, "|");
printf("%s\n", value);
}
char *strsep(register char **stringp, register const char *delim)
{
register char *s;
register const char *spanp;
register int c, sc;
char *tok;
if ((s = *stringp) == NULL)
return (NULL);
for (tok = s;;) {
c = *s++;
spanp = delim;
do {
if ((sc = *spanp++) == c) {
if (c == 0)
s = NULL;
else
s[-1] = 0;
*stringp = s;
return (tok);
}
} while (sc != 0);
}
/* NOTREACHED */
}
UNIX_LINUX_C_C++
strsep C 소스
초파
2012. 2. 2. 17:32