|
发表于 2023-4-19 17:31:43
From FishC Mobile
|
显示全部楼层
|阅读模式
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
void main()
{
char p[99]="abcdefg";
printf("%d\n",strlen(strcpy(p+3,"ABCD")));
printf("%s",p);
}
为什么长度会输出是呢,不应该是计算复制后的长度吗
您的理解是正确的。在 C 语言中,strcpy() 和 strcat() 都返回目标字符串的起始地址。当您将它们与 strlen() 混合使用时,strlen() 计算的实际上是这些函数返回值所指向的字符串的长度。
- strcpy():它将源字符串复制到目标字符串,并返回目标字符串的起始地址。
- strcat():它将源字符串追加到目标字符串的末尾,并返回目标字符串的起始地址。
当您将 strlen() 与这些函数混合使用时,请注意它们返回的字符串地址。例如,下面是 strcat() 的例子:#include <stdio.h>
#include <string.h>
void main()
{
char p[99] = "abc";
char q[] = "def";
printf("%d\n", strlen(strcat(p, q)));
printf("%s", p);
}
这段代码的输出将是:
这里,strcat(p, q) 连接了字符串 p 和 q,并返回了目标字符串 p 的起始地址。因此,strlen(strcat(p, q)) 计算的是连接后字符串 "abcdef" 的长度,即 6。
总结一下,在使用 strlen() 与 strcpy() 或 strcat() 混合时,请注意返回的字符串地址。strlen() 函数将计算该地址所指向的字符串的长度。
|
|