【发布时间】:2022-01-21 02:47:08
【问题描述】:
我对 C 很陌生,可以弄清楚为什么这个函数不能始终如一地工作:
char **splitString(char *string) {
char *token = strtok(string, ","), **finalValue = NULL, **temp = NULL;
size_t wordIndex = 0;
while (token != NULL) {
temp = realloc(finalValue, sizeof(char *));
if (!temp) {
freeArray(finalValue);
finalValue = NULL;
break;
}
temp[wordIndex] = malloc((strlen(token)+1)*sizeof(char));
if (temp[wordIndex] == NULL) {
freeArray(finalValue);
finalValue = NULL;
break;
}
strcpy(temp[wordIndex], token);
printf("%s\n", temp[wordIndex]);
finalValue = temp;
printf("%s\n", finalValue[wordIndex]);
wordIndex++;
token = strtok(NULL, ",");
}
return finalValue;
}
它接收一个用逗号分隔的字符串,它应该将它们分成不同的字符串,所有这些字符串都是通过malloc/realloc创建的。
【问题讨论】:
-
temp = realloc(finalValue, sizeof(char*));为单个指针分配内存。有什么意义? -
idk 我必须从原始字符串中创建多少个字符串,所以每次迭代时,我都会为另一个字符串创建一个位置
标签: c string pointers dynamic-memory-allocation