保留两个字符串的公共前缀.....C编程...分段错误错误

发布于 2024-09-11 20:25:41 字数 342 浏览 5 评论 0原文

char *strip_postfix(char *str1, char *str2)
{
   int i;

   for(i=0; str2[i] != '\0'; i++)
   {
      if(str1[i] != str2[i])
      {
         str1[i] = '\0';
         break;
      }
   }
   return str3;
}

这段代码在运行时在 str1[i] = '\0' 行给出分段错误错误...我认为存在一些内存分配问题,因为当我创建一个新变量并将内容复制到那里时,然后返回该新变量,一切正常......请让我知道这有什么问题。

char *strip_postfix(char *str1, char *str2)
{
   int i;

   for(i=0; str2[i] != '\0'; i++)
   {
      if(str1[i] != str2[i])
      {
         str1[i] = '\0';
         break;
      }
   }
   return str3;
}

This code, is giving segmentation fault error at line str1[i] = '\0' during run time..... I think there is some memory allocation issue,, as while I create a new variable and copy the contents there, and then return that new variable, everything works fine.... Please let me know what's the issue in this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

濫情▎り 2024-09-18 20:25:41

如果 str1 小于 str2 会发生什么?

您还拥有:

return str3;

这让我认为这段代码无法以其当前形式编译......

What happens if str1 is smaller than str2?

You also have:

return str3;

Which makes me think this code will not compile in its current form...

念三年u 2024-09-18 20:25:41

你的代码应该像

int str1len =  strlen(str1);    
for(i=0; str2[i] != '\0'; i++)
   {
      if(str1[i] != str2[i] || i >= str1len)
      {
         str1[i] = '\0';
         break;
      }
   }
return str1;

谢谢

Your code should like

int str1len =  strlen(str1);    
for(i=0; str2[i] != '\0'; i++)
   {
      if(str1[i] != str2[i] || i >= str1len)
      {
         str1[i] = '\0';
         break;
      }
   }
return str1;

Thanks

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文