【发布时间】:2022-01-05 11:45:10
【问题描述】:
我被要求创建一个函数,该函数接受一个字符串并将其添加到另一个字符串中,每个单词之间都带有“#”,末尾带有“@”,末尾没有任何空格。 我已经写了这段代码,但它看起来不起作用,你能帮帮我吗? 重新分配行有一个异常,我相信它是因为最后的 '\0' 或类似的,但我不知道如何解决。
void addStr(char* addTo, char* str,int on)
{
//on ==1 for nun last string to add
if (str != NULL) {
while (str != NULL)
{
char* temp = strtok(str, " \0\n");
if (temp != NULL)
{
addTo = (char*)realloc(addTo, strlen(addTo) + strlen(temp) * sizeof(char) + 1);
strcat(addTo, temp);
if (str != NULL)
strcat(addTo, "#");
}
}
if(on)
strcat(addTo, "@");
}
}
【问题讨论】:
-
有很多问题,但最明显的一个是你的函数的签名。请查看
realloc的签名。它看起来像void realloc(void*, size_t)吗?不,是void* realloc(void*, size_t)。你能想出一个原因吗?