2009-09-25 5 views
1
char *str = malloc (14); 
sprintf(str, "%s", "one|two|three"); 

char *token1, *token2, *token3; 
char *start = str; 

token1 = str; 
char *end = strchr (str, '|'); 
str = end + 1; 
end = '\0'; 

token2 = str; 
end = strchr (str, '|'); 
str = end + 1; 
end = '\0'; 

... 

free(start); 

올바르게 토큰 화하기 위해 문자열 str에서 바이트를 설정했기 때문에 자유롭게 작동합니까?C 문자열 토큰 화 질문

+1

malloc과 free에 동일한 변수 이름을 사용하는 것이 좋습니다. 이 경우 malloc에 ​​"start"를 사용하고 "start"의 값에 "str"을 할당하십시오. – selwyn

+0

아, 알겠습니다. – user105033

답변

5

예, 작동은 무료입니다. 또는 하나라도 있어도. 널 문자로 끝나는 문자열뿐만 아니라 모든 유형의 데이터에 malloc/free를 사용할 수 있습니다.

3

무료는 데이터 내용을 확인하지 않습니다. 그래 맞아.