파싱함수(?) 테스트 중에.
글쓴이: 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:


댓글 달기