c - 返回类型为空。我的职能也需要帮助

标签 c arrays string pointers void

我正在尝试编写一个函数,该函数允许我在字符串“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' 字符分配空间。
  • 如果像您的情况一样,tofrom 长怎么办?那么你就会分配错误。
  • C 中的参数按值传递,这意味着它们被复制,并且函数只有副本而不是原始参数。这会影响您的 dest 参数。要模拟按引用传递,您必须传递一个指针,在您的情况下是指向该指针的指针。

最后:

只是吹毛求疵:

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

关于c - 返回类型为空。我的职能也需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28150413/

相关文章:

c - 函数中的scanf重复输入请求两次

c - 我正在编写的 shell 在 execvp() 失败后无法正确退出

C 字符数组串联内存转储

php - Symfony:遍历 json 对象到数组

php - 在 PHP 中使用 "limit"随机排列数组

c - while(~scanf 在 C 中意味着什么?

c++ - 从数组中释放内存

java - 从Java中的字符串中提取特定但未知的值

Ruby - 将字符串转换为浮点返回 0.0

java - 从字符串中获取原始字节数组