【发布时间】:2014-04-19 04:02:02
【问题描述】:
我正在编写 C 函数 strcat 的指针版本。它将字符串 t 复制到 s 的末尾。这是我的解决方案:
/* strcat: a pointer version of the strcat (copy string t to the end of s) */
void strcat (char *s, char *t)
{
while (*s++ != '\0') /* find the end of s */
;
while (*s++ = *t++)
;
}
我运行它但它崩溃了 - 代码块调试器称它为分段错误,并且这部分函数导致了崩溃:
while (*s++ = *t++)
我做错了什么?
【问题讨论】:
-
写
==而不是=。 -
你是怎么称呼你的
strcat()的? -
你分配了足够的内存吗?如果您显示更多代码,将会很有帮助。
-
顺便说一句,你的实现有一个逻辑缺陷,在第一个
while循环之后,s将指向第一个字符串的\0之后的字符,你需要添加s--;在进入第二个while循环之前。 -
编写一个与标准函数同名的函数是未定义的行为(或者实际上任何名称以
str开头,后跟一个小写字母)。您应该将其称为其他名称,例如my_strcat。问题的另一个可能原因是,如果您实际上没有传入具有足够s可写空间的缓冲区。请发布崩溃的整个程序。
标签: c string pointers segmentation-fault