美文网首页
【嵌入式C】strcat的陷阱

【嵌入式C】strcat的陷阱

作者: Blue_Well | 来源:发表于2021-07-06 17:13 被阅读0次

在嵌入式C中,可能会需要用到两个字符串合并起来的情况,比如声明两个字符串str1 = "abc"; str2 = "def";,最后想得到一个str = "abcdef";的字符串。

这时可以使用C语言中的strcat函数,但这个函数有一个需要注意的地方是,它需要传入的字符串以'\0'结尾才能正确合并。

如果像str1和str2这样的字符串,虽然也能合并,但是会有概率造成内存越界访问导致芯片Hardfault的风险,所以这里需要改成str1 = "abc\0"; str2 = "def\0";后再去调用strcat(str1, str2 );

网上关于这个函数的实现原理:

char * __cdecl strcat (char * dst, const char * src)
{
  char * cp = dst;
  while( *cp )
  cp++; /* find end of dst */
  while( *cp++ = *src++ ) ; /* Copy src to end of dst */
  return( dst ); /* return dst */
}

相关文章

网友评论

      本文标题:【嵌入式C】strcat的陷阱

      本文链接:https://www.haomeiwen.com/subject/fmbgultx.html