Я хочу создать функцию, которая разделяет данную строку в соответствии с разделителем (winter-is-ближайшие -> зима | идет | идет) к своим подстрокам и возвращает нулевую строку в конце двухсимвольного указателя. Когда я запускаю этот код под Mac OS X в стандарте C90, я получаю первую строку как «зима» (~ как w, wi, win, wint, winte, winter ~, когда я печатаю temp в цикле), но затем она неожиданно обрывается и выдает эту ошибку:
untitled2(30275,0x109cf25c0) malloc: *** error for object 0x7fec9a400630: pointer being realloc'd was not allocated
untitled2(30275,0x109cf25c0) malloc: *** set a breakpoint in malloc_error_break to debug
Мой код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char ** split(char *str, char delimeter) {
int i = 0;
int c = 0;
int k = 1;
char **result;
result = (char **) malloc(sizeof(char*));
*result = (char *) malloc(sizeof(char));
char * temp;
temp = *result;
while (str[i] != '\0') {
if (str[i] != delimeter) {
*(temp + i) = *(str + i);
i++;
temp = (char *) realloc(*(result + c), sizeof(char) * (i + 1));
continue;
}
else {
c++;
k++;
result = (char **) realloc(result, sizeof(char *) * k);
*(result + c) = (char*) malloc(sizeof(char));
i++;
*(temp + i) = '\0';
}
}
printf("%s\n", result[0]);
return result;
}
int main() {
char *cpr;
cpr = (char *) malloc(sizeof(char) * strlen("winter-is-coming"));
strcpy(cpr, "winter-is-coming");
printf("%s\n", split(cpr, '-')[0]);
return 0;
}