C语言 返回类型无效.还需要帮助我的功能



我正在尝试编写一个函数,该函数允许我在字符串"src"中找到子字符串"from",并在所有情况下将"from"子字符串替换为"to"子字符串,并通过"dest"输出新字符串

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
  • 您忘记为终止''字符分配空间。
  • 如果像您一样,tofrom长怎么办?那么你将分配错误。
  • C 中的参数是按值传递的,这意味着它们被复制,并且函数只有副本而不是原始副本。这会影响你的dest论点。若要模拟按引用传递,必须传递指针,在本例中为指向指针的指针。

最后:

  • 在 C 中,您不应该强制转换 malloc 的返回。

只是吹毛求疵:

  • 在返回void的函数末尾不需要显式return语句,编译器会隐式处理它。

最新更新