이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date |
2012/01/20 15:56:03 |
Name |
곧내려갈게요 |
Subject |
C 언어 질문이 있습니다. |
현재 우분투에서 icc로 컴파일을 하고 있는데, strtok같은 문자열을 반환하는 함수들을 사용하는데 문제가 있습니다.
일반적으로 strtok의 예제들에서는 아래처럼
따로 malloc이 되지 않은 char 변수들에도 strtok를 사용가능한데,
지금 제 경우엔 malloc을 한 char변수들에만 strtok이 가능합니다.
#include <stdio.h>
#include <string.h>
int main( void)
{
char str[] = "forum falinux com";
char *ptr;
int ndx;
printf( "함수 호출 전: %s\n", str);
ptr = strtok( str, " ");
printf( "%s\n", ptr);
while( ptr = strtok( NULL, " "))
{
printf( "%s\n", ptr);
}
printf( "함수 호출 후: %s\n", str);
// 함수 호출 후에는 원본 문자열의 내용이 바뀌므로 주의해야 합니다.
printf( "문자열의 변화\n", str);
for( ndx=0; ndx < 17; ndx++)
printf( "%c %d\n", str[ndx], str[ndx]);
return 0;
}
이를테면 위의 예에서 제경우엔 ptr의 선언이
char *ptr = malloc(105);
로 되어야 strtok이 사용가능합니다.
물론 예제대로 사용해도 컴파을은 워닝이나 에러없이 완료되지만 바이너리를 실행하면 세그멘테이션 오류가 뜹니다.
지금 상황으로는 동적할당이 되지 않은 변수들에도 strtok을 꼭 사용해야 하는데 예제들과 달리 자꾸 오류가 발생하니 답답합니다.
혹시 컴파일러 옵션 통해서 문제를 해결 할 수 있거나, 혹은 다른 방법으로 문제를 해결할 방법이 있나요?
|
통합규정 1.3 이용안내 인용
"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
|