我试图编写一个函数,允许我找到一个子串"来自"在一个字符串" src"中,并替换"来自"子串与"到"在所有情况下都是子串,并通过" dest";输出新字符串。但是我认为我的代码看起来有点不确定,而且我不理解(概念上)如何返回带有dest的输出,因为输出的类型为void。我想知道是否有人可以提供一些帮助?我不知道如何通过dest输出...而且我一直收到10号巴士错误。
void find_replace(char* src, char* from, char* to, char* dest)
{
dest = (char * ) malloc(sizeof(src)+sizeof(from));
char * stringcomb;
int i;
int j;
stringcomb = strstr(src, from);
strncpy(stringcomb, to, strlen(to));
puts (src);
return ;
}
int main (int argc, char *argv[])
{
char* dest;
find_replace("I hate this project", "hate", "not hate", dest);
}
答案 0 :(得分:3)
这段代码存在多个问题:
sizeof
时,您将获得指针的大小,而不是指向它的大小/长度。如果您想获得字符串的长度,请使用strlen
。'\0'
字符分配空间。to
长于from
,该怎么办?然后你会分配错误。dest
参数。要通过引用模拟传递,必须传递一个指针,在您的情况下是一个指向指针的指针。最后:
只是为了挑剔:
return
的函数末尾不需要显式void
语句,编译器将隐式处理它。