我正在编写
对于
strcat
函数。/*appends source string to destination string*/
#include <stdio.h>
int main()
{
char srcstr[100], deststr[100];
char *psrcstr, *pdeststr;
printf("\n Enter source string: ");
gets(srcstr);
printf("\n Enter destination string: ");
gets(deststr);
pdeststr = deststr;
psrcstr = srcstr;
while(*pdeststr++)
;
while(*pdeststr++ = *psrcstr++)
;
printf("%s", deststr);
return 0;
}
对于
srcstr = " world"
和 deststr = "hello"
,我得到的结果是 hello
,但我期望看到的是 hello world
,如果我将第一个 while
改成如下所示,那么我就会看到 hello world
:while(*pdeststr);
pdeststr++;
为什么我不能像第二个while
一样,在第一个while
中将所有内容写在同一行中?
gets()
函数。它不安全,而且甚至已经不再是 C 语言的一部分了。请使用fgets()
函数代替。 - alkwhile(*pdeststr++);
即使找到了空字符终止符,指针仍会增加。然后,下面的“复制”行将保持原始的空字符终止符不变,并且对于字符串处理函数来说是无用的。 - Weather Vanewhile (*pdeststr);
循环中有一个多余的分号。如果字符串为空,则此循环永远不会循环,如果不为空,则会无限循环。请删除这两个分号中的第一个分号。 - Jonathan Leffler