1
我試圖創建一個函數,用給定的定界符標記給定的字符串,將標記放入2D字符數組並將其返回。下面的代碼顯示:使用strtok()標記字符串會導致崩潰c
char** stringTokenizer(const char* str, const char* delims){
char** tokens;
size_t len = strlen(str);
char localstr[len+1];
int tokenslen=0;
strcpy(localstr, str);
tokens=malloc(sizeof(char*));
char* tmp = strtok(localstr, delims);
while(tmp){
if(++tokenslen>1) realloc(tokens, tokenslen*sizeof(char*));
tokens[tokenslen-1]=malloc((strlen(tmp)+1)*sizeof(char));
strcpy(tokens[tokenslen-1],tmp);
tmp = strtok(NULL, delims);
}
if(tokenslen==0){
free(tokens);
return NULL;
} else return tokens;
}
當我嘗試打印任何令牌[我]即時通訊崩潰。
只要有一個令牌,我會增加令牌數組的大小併爲要複製的令牌分配指針。
有什麼建議嗎?
謝謝!
你應該考慮雙指針在這裏:'令牌=的malloc(的sizeof(字符*));'ATLEAST。 – tod
你如何印製代幣? – MicroVirus
'realloc(tokens,tokenslen * sizeof(char *));':你放棄返回值。 – BLUEPIXY