2009-09-25 65 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中的字節設置爲null以標記化它?c字符串標記化問題

+1

這是一個很好的做法,爲malloc和free使用相同的變量名稱。在這種情況下,對malloc使用「start」,然後將「str」分配給「start」的值。 – selwyn 2009-09-25 15:11:29

+0

啊,好吧,這是有道理的 – user105033 2009-09-25 15:21:59

回答

5

是的,它的工作,免費不關心空終止的地方。或者即使有一個。你可以對任何類型的數據使用malloc/free,而不僅僅是null結尾的字符串。

3

免費不檢查數據的內容。所以是的這是正確的