我正在编写一个简单的字符串连接程序。
该程序按照我发布的方式运行。但是,我首先使用以下代码编写它来查找字符串的结尾:
while (*s++)
;
然而,这种方法并没有奏效。我传递给它的字符串没有正确复制。具体来说,我尝试将“abc”复制到保存“\0”的 char[] 变量。
从阅读 C K&R 的书来看,它看起来应该可以工作。该紧凑形式应采取以下步骤。
- *s 与 '\0' 比较
- s 指向下一个地址
那么为什么它不起作用呢?我在 Debian 上使用 gcc 进行编译。
我发现这个版本确实有效:
strncat(char *s, const char *t, int n)
{
char *s_start = s;
while (*s)
s++;
for ( ; n > 0 && *t; n--, s++, t++)
*s = *t;
*(s++) = '\0';
return s_start;
}
提前致谢。