gpt4 book ai didi

C拆分字符串函数

转载 作者:太空宇宙 更新时间:2023-11-04 04:05:27 24 4
gpt4 key购买 nike

我正在尝试实现拆分字符串的功能,但我不断遇到段错误。我在 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(),但仍然没有任何进展。

最佳答案

您没有计算空终止符,并且复制了错误的字节数

char* strdup(char* str) {
char* res = (char*)malloc(strlen(str)); /* what about the null terminator? */
strncpy(res, str, sizeof(str)); /* sizeof(str)
** is the same as
** sizeof (char*) */
return res;
}

关于C拆分字符串函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6542362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com