파싱함수(?) 테스트 중에.
글쓴이: taroo / 작성시간: 금, 2005/03/04 - 2:44오후
일종의 파싱이랄까요.. 문자열을 받아서 문자열의 앞에서 문자열 첫 바이트에 들어있는 값 만큼 떼어내 버리고 리턴하는 함수입니다.
#include <stdio.h> #include <string.h> #include <stdlib.h> typedef unsigned char UINT8 ; static UINT8* _getString(UINT8** ptrBuf) { UINT8 length = **ptrBuf; //버퍼의 첫번째 1바이트를 length에 저장 UINT8* ret; **ptrBuf = 'x'; //버퍼의 첫번째 바이트를 초기화 *ptrBuf = *(ptrBuf)+1; ret = *ptrBuf; //버퍼의 두번째 바이트 주소를 ret에 저장 printf("ret %s\n", ret ); *ptrBuf += length; printf("prtBuf %s\n", *ptrBuf); return (UINT8*)ret; } int main() { UINT8 * teststring; char ** pptest; char TestArr[4]; sprintf(TestArr, "%cab", 0x47); pptest = (char**)malloc(sizeof(char*)*400); *pptest = (char*)malloc(sizeof(char)*4); *(pptest+1) = (char*)malloc(sizeof(char)*4); memcpy(*pptest, TestArr, 4); memcpy(*(pptest+1), "cde", 4); printf("%s\t%s\n", *pptest, *(pptest+1)); teststring = _getString(pptest); printf("teststrign %s \n",teststring); printf("ptrBuf %s\n", *pptest); free(pptest); return 0; }
Break Pointer를 넣어서 한 줄 씩 실행하게 되면, 제대로 출력되는데 그렇지 않으면 제대로 출력이 안됩니다.
환경 : Window XP / VC++ 6.0
이유가 뭘까요?
Forums:
댓글 달기