Я пытаюсь реализовать функцию для разделения строк, но я продолжаю получать ошибки сегментации. Я работаю над Windows XP, и поэтому мне также пришлось реализовать strdup (), потому что Windows API не предоставляет его. Может кто-нибудь сказать мне, что не так со следующим фрагментом кода.
char** strspl(char* str, char* del)
{
int size = 1;
for(int i = 0; i < strlen(str);) {
if(strncmp(str + i, del, strlen(del)) == 0) {
size++;
i += strlen(del);
}
else {
i++;
}
}
char** res = (char**)malloc(size * sizeof(char*));
res[0] = strdup(strtok(str, del));
for(int i = 0; res[i] != NULL; i++) {
res[i] = strdup(strtok(NULL, del));
}
return res;
}
char* strdup(char* str) {
char* res = (char*)malloc(strlen(str));
strncpy(res, str, sizeof(str));
return res;
}
РЕДАКТИРОВАТЬ: с помощью отладчика я обнаружил, что программа падает после следующей строки:
res[0] = strdup(strtok(str,del));
Кроме того, я исправил strdup (), но прогресса до сих пор нет.