매번 질문만 드리네요..^^;
다음과 같은 문자열을 A"1000";B"2000";
char string[]="A\"1000\";B\"2000\";"; 의 값을 A=1000, B=2000 으로 대입할 수 있게 파싱할 수 있는 방법이 없을까요?
일일이 자르면 되겠지만 일반 파싱함수로 하려니 힘드네요.. 전문가님들의 조언 부탁드립니다..
감사합니다.
char string[]="A\"1000\";B\"2000\";"; int a, b; char ca, cb; sscanf(string, "%c\"%d\";%c\"%d\";", &ca, &a, &cb, &b);
훔.. 명쾌한 답변입니다.
======================== 조직 : E.L.D(Embedded Linux Developer/Designer) 블로그 : poplinux@tistory.com 카페 : cafe.naver.com/poplinux
임베디드 리눅스 관련 프리렌서 지향
더더더 공부만이 .. 살길이네요..^^;
주어진건 간단한 문자열이니까...저렇게 해도 되지만, 좀 더 복잡해지면..
boost의 token 시스템이나...(토크나이저였나? 이름은 가물가물..;;)
정규식이나...좀 많이 복잡한 거라면 spirit도 있습니다 ^^;;
뭐...yacc를 쓰는 방법도 있지요 ㅡ _-;;
------------------------------------------ Let`s Smart Move!!http://kalstein.tistory.com/
#include <string.h> #include <stdio.h> #define MAX_DATA 10 typedef struct _tag_sturct { char var; long value; } node; int main( int argc, char* argv[] ) { char string[] = "A\"1000\";B\"2000\";"; char seps[] = "\";\\"; char *token; node foobar[MAX_DATA]; int i = 0; int count = 0; memset( foobar, 0, sizeof(node) * MAX_foobar ); printf( "%s\n\nTokens:\n", string ); /* Establish string and get the first token: */ token = strtok( string, seps ); while( token != NULL ) { /* While there are tokens in "string" */ foobar[count].var = *token; /* Get next token: */ token = strtok( NULL, seps ); foobar[count].value = atoi( token ); /* Get next token: */ token = strtok( NULL, seps ); count++; } for( i = 0 ; i < count ; i++ ) { printf( " %c=%d\n", foobar[i].var, foobar[i].value ); } return 0; }
segenny님께서 원하시는 소스는 이런게 아닐까요...
1. MSDN strtok() 소스 약간 수정 2. thread-safety 하지 않죠. strtok()가...
※ 단순한건 strxxx()계열로 처리하시고, syntax로 넘어가면 lex계열로...
Hello World.
성의없는 질문도 너무 성의께 답변 주셔서 감사합니다..
^^;
텍스트 포맷에 대한 자세한 정보
<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]
char
훔.. 명쾌한
훔.. 명쾌한 답변입니다.
========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux
임베디드 리눅스 관련 프리렌서 지향
감사합니다.
더더더 공부만이 .. 살길이네요..^^;
주어진건 간단한
주어진건 간단한 문자열이니까...저렇게 해도 되지만, 좀 더 복잡해지면..
boost의 token 시스템이나...(토크나이저였나? 이름은 가물가물..;;)
정규식이나...좀 많이 복잡한 거라면 spirit도 있습니다 ^^;;
뭐...yacc를 쓰는 방법도 있지요 ㅡ _-;;
------------------------------------------
Let`s Smart Move!!
http://kalstein.tistory.com/
이게 아닐까 생각합니다.
segenny님께서 원하시는 소스는 이런게 아닐까요...
1. MSDN strtok() 소스 약간 수정
2. thread-safety 하지 않죠. strtok()가...
※ 단순한건 strxxx()계열로 처리하시고, syntax로 넘어가면 lex계열로...
Hello World.
와~ 감사합니다.
성의없는 질문도 너무 성의께 답변 주셔서 감사합니다..
^^;
댓글 달기