我正在尝试编写一个函数,该函数允许我在字符串“src”中找到子字符串“from”,并在所有情况下用“to”子字符串替换“from”子字符串,并输出新字符串通过“目的地”
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;
}
最佳答案
您的这段代码存在多个问题:
- 当您对指针执行
sizeof
时,您将获得指针的大小,而不是它所指向的内容的大小/长度。如果您想获取字符串的长度,请使用strlen
。 - 您忘记为终止
'\0'
字符分配空间。 - 如果像您的情况一样,
to
比from
长怎么办?那么你就会分配错误。 - C 中的参数按值传递,这意味着它们被复制,并且函数只有副本而不是原始参数。这会影响您的
dest
参数。要模拟按引用传递,您必须传递一个指针,在您的情况下是指向该指针的指针。
最后:
只是吹毛求疵:
- 在返回
void
的函数末尾不需要显式return
语句,编译器会隐式处理它。
关于c - 返回类型为空。我的职能也需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28150413/