我正在编写一个简单的字符串连接程序。
该程序按照我发布的方式运行。但是,我首先使用以下代码编写它来查找字符串的结尾:
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;
}
提前致谢。
最佳答案
while (*s++);
结束后,s
指向空终止符之后的字符。在下面的代码中考虑到这一点。
关于c - 查找字符串结尾 : *s++ VS *s then s++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2174426/