vol*_*lni 2 c pointers postfix-operator
我正在编写一个简单的字符串连接程序.
该程序按我发布的方式工作.但是,我首先使用以下代码编写它来查找字符串的结尾:
while (*s++)
;
Run Code Online (Sandbox Code Playgroud)
但是,该方法不起作用.传递给它的字符串未正确复制.具体来说,我试图将"abc"复制到一个持有"\ 0"的char []变量.
从阅读C K&R书籍看起来应该可行.紧凑的表格应采取以下步骤.
那为什么不起作用呢?我在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;
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.
问题是
while (*s++)
;
Run Code Online (Sandbox Code Playgroud)
始终递增s,即使s为零(*s为假)
while (*s)
s++;
Run Code Online (Sandbox Code Playgroud)
仅当*s非零时才增加s
所以第一个将指向第一个\ 0 之后的第一个字符,而第二个将指向第一个\ 0.