c 프로 그래밍관련 질문입니다. (문자열 관리)
글쓴이: facered79 / 작성시간: 화, 2005/06/28 - 6:09오후
먼저 문자열의 내용은 아래와 같습니다.
char* spec_trap="6f0302";
이 문자열을 각각의 포인터에 두자리씩 저장을 할려고 하는데요..
전 아래와 같은 방법을 사용했습니다.
char *sensor_type, *event_type, *offset; char sep_trap[2]; sprintf(sep_trap,"%c%c",spec_trap[0],spec_trap[1]); sensor_type = strdup(sep_trap); printf("sensor_type is %s\n",sensor_type); sprintf(sep_trap,"%c%c",spec_trap[2],spec_trap[3]); event_type = strdup(sep_trap); printf("event_type is %s\n",event_type); sprintf(sep_trap,"%c%c",spec_trap[4],spec_trap[5]); offset = strdup(sep_trap); printf("offset_type is %s\n",offset);
이런식으로 해서 각각의 포인터로 나눠줬는데.. 아무래도 이부분에서 메모리관련 문제가 발생해 세그멘테이션 오류가 생기는거 같습니다.
다른방법 으로 이와 같이 할려면 어떻게 할 수 있나요..
그리고.. 포인터를 선언한후 메모리관리를 해줘야 하는지에 대해서
조언해주셨으면 감사하겠습니다..
[/code]
Forums:
Re: c 프로 그래밍관련 질문입니다. (문자열 관리)
C에서 문자열이라 함은 NUL(\0)로 끝나야 합니다. 원래 코드에서 strdup()에 sep_trap을 인수로 주시려면 sep_trap 끝에 NUL이 들어갈 수 있도록 공간을 확보해 주시면 됩니다. 아래와 같이 바꿔 보시면 어떨까요?
댓글 달기