strtok로 ',' 를 구분해서 문자열을 짤라 내었습니다..
예를 들면 a, b, c, d, e 면 a b c d e 이렇게 값을 얻어오게 되게 햇는데;
a, b, c, d, e, , f 일 결우에 공백값은 얻어오지 못하더군요;
공백이 읽혀야 하는데; 공백을읽지 않고 바로 f를 가져 옮니다.;
어떻게 하면 공백이 읽힐까요;
a, b, c, d, e, , f
, , 사이에 공백문자가 포함되어 있나요?
공백문자가 없으니 당연히 f가 바로 나오겠죠.
H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!
소스를 보여 주세요... 뭔가 잘 못 된 부분이 있을거 같은데...
#include <stdio.h> int main(void) { char test[80], blah[80]; char *sep = "\\/:;=-\t"; char *word, *phrase, *brkt, *brkb; strcpy(test, "This;is.a:test:of=the/str ing\\tokenizer- : : function."); printf("test = [%s]\n", test); for (word = strtok_r(test, sep, &brkt); word; word = strtok_r(NULL, sep, &brkt)) { printf("word = [%s]\n", word); } }
이건 잘 됨...
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h> do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
strtok 는 원래 그런거라고 알고 있습니다. 원하시는 기능을 하시려면 strsep 함수를 쓰세요.
추신.. 공백값이라고 말씀하셔서 많은 분들이 혼란이 생깁니다. 공백값 또는 공백문자(space)와 진짜 아무 문자도 없는 것을 구분 안 해주셔서요 ^^;
/* 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 */ }
한가지 궁금한 사항이 있는데요..
C++ string class와 관련된 함수는 없나요?
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동 "만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
strtok 는 규칙대로 아주 잘작동하는 함수입니다. 공백이 있다면 분명 공백을 얻어옵니다.
----------------------------------------------------------------------------
:oops:
공백이..아니라. 아무값도 없는 거였네요;
저도 이상하다고 계속 생각했었는데 ,, 제가 잘못한거 였네요
그러면 strsep써야겠네요..
감사합니다.~
한가지 궁금한 사항이 있는데요.. C++ string class와 관련된 함수는 없나요?
아래 링크에 C++로 구현한 split에 대한 내용이 있습니다http://bbs.kldp.org/viewtopic.php?t=35996&highlight=yielding
Life rushes on, we are distracted
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
음...
a, b, c, d, e, , f
, , 사이에 공백문자가 포함되어 있나요?
공백문자가 없으니 당연히 f가 바로 나오겠죠.
H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!
소스를 보여 주세요...뭔가 잘 못 된 부분이 있을거 같은데...
소스를 보여 주세요...
뭔가 잘 못 된 부분이 있을거 같은데...
이건 잘 됨...
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
strsep를 써보세요
strtok 는 원래 그런거라고 알고 있습니다.
원하시는 기능을 하시려면
strsep 함수를 쓰세요.
추신..
공백값이라고 말씀하셔서 많은 분들이 혼란이 생깁니다.
공백값 또는 공백문자(space)와 진짜 아무 문자도 없는 것을 구분 안 해주셔서요 ^^;
한가지 궁금한 사항이 있는데요..C++ string class와
한가지 궁금한 사항이 있는데요..
C++ string class와 관련된 함수는 없나요?
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
strtok 는 규칙대로 아주 잘작동하는 함수입니다.공백이 있다면 분
strtok 는 규칙대로 아주 잘작동하는 함수입니다.
공백이 있다면 분명 공백을 얻어옵니다.
----------------------------------------------------------------------------
:oops: 공백이..아니라. 아무값도 없는 거였네요;저도
:oops:
공백이..아니라. 아무값도 없는 거였네요;
저도 이상하다고 계속 생각했었는데 ,, 제가 잘못한거 였네요
그러면 strsep써야겠네요..
감사합니다.~
[quote="fehead"]한가지 궁금한 사항이 있는데요..C+
string::find_first_of 가 대략 비슷한 일을 합니다.
이외에도 find_last_of, find_first_not_of, find_last_not_of 등의
멤버 함수가 제공됩니다.
아래 링크에 C++로 구현한 split에 대한 내용이 있습니다[url
아래 링크에 C++로 구현한 split에 대한 내용이 있습니다
http://bbs.kldp.org/viewtopic.php?t=35996&highlight=yielding
Life rushes on, we are distracted
댓글 달기