strcpy(str+2,strcat(p1,p2))啥意思。

如题所述

strcat(p1,p2)就是把p2所指的字符串,连接到p1后面。
如char *p1="ab",char *p2="cd"; strcat(p1,p2)后,则p1指向"abcd",
strcat返回的是p1的指针。
strcpy就是把些时p1所指的内容,放在str+2的位置上。
比如str指向"xyz",
则strcpy后,str指向值为“xyabcd"
当然,这些操作的前提,都是数组不要越界了!
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-02-15
p1,p2,str都是字符串
strcat是将p2接到p1的后面,例如:p2="abc", p1="jkl", 那么strcat(p1,p2),得到的p1就是"jklabc",p1也是这个函数的返回值
strcpy是将第二个字符串复制到第一个字符串那里
例如:strcpy(str, "abc"); 那么str就是"abc"
至于你整句可以写个简单的代码测试下
int main()
{
char str[20] = "abcdefg";
char p1[10] = "kkk";
char p2[10] = "lll";
strcpy(str+2,strcat(p1,p2));
printf("%s", str);
return 0;
}
打印abkkklll
第2个回答  2012-02-15
先执行strcat(p1,p2),执行的结果是将p2字符串复制到p1的尾部,要注意p1空间是否够大,返回的是char *类型,即尾部添加了p2的p1。然后执行str+2,若str是一个可变指针,结果为:str指向原来str指向的字符串的第三个位置。然后执行strpy(a,b),执行结果是将p1覆盖现在的str字符串。总而言之,程序的本意是:p1连接p2后,从str的第三个位置开始覆盖。
第3个回答  2012-02-15
strcpy
语法:
#include <string.h>
char *strcpy( char *to, const char *from );
功能:复制字符串from 中的字符到字符串to,包括空值结束符。返回值为指针to。
所以strcpy(str+2,strcat(p1,p2))等价于
char *a=strcat(p1,p2);
strcpy(str+2,a);
把p2字符串复制到p1,然后再将p1的字符串复制到str+2为地址的指针所指向的内存单元(数组)
第4个回答  2016-12-28
char *p1="ab";
char *p2="cd";
strcat(p1,p2);

如果在函数里面这些,运行会报错的,根本得不到想要的结果的;
具体错误的原因如下:
原型:extern char *strcat(char *dest,char *src);
src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
简单的说就是:p1指向文字常量区,是只读的, 把p1改成数组形式就可以了
就是p1不可以是指针,改成数组就可以了

strcpy(str+2,strcat(p1,p2))啥意思。
strcat(p1,p2)就是把p2所指的字符串,连接到p1后面。如char *p1="ab",char *p2="cd"; strcat(p1,p2)后,则p1指向"abcd",strcat返回的是p1的指针。strcpy就是把些时p1所指的内容,放在str+2的位置上。比如str指向"xyz",则strcpy后,str指向值为“xyabcd"当然,这些操作的前提,都是数组不...

为什么C\/ C++中strcpy()不是复制?
strcpy()是复制字符串。strcat()是把两个字符串连接起来。str+2,这个是把数组当成指针用。str指向的是数组里的第一个元素,str+2指向数组里第三个元素,也就是字母z。C\/C++里的数组跟指针很相似的。如果不明白就去翻翻书吧。strcpy(str+2,strcat(p1,p2));这整句的意思就是:先把p1和p2连起来...

下面程序的输出是()
…要是非要选的话当然是选D,意思是先将p2指向的字符串拼接到p1指向的字符串的结尾,得到“abcABC”,然后将这个字符串再复制到str+2(str指向首地址“x”,str就指向了“z”,所以将"z"用"cdBCD"进行字符串拷贝) 但是,这个程序是错误的,strcpy(str+2,strcat(p1,p2));这句中,strcat(p1,p...

C语言 strcpy(str,strcat(p1,p2))是什么意思
先把p2接到p1后面,再把接起来的这个结果拷贝到str。

strcat(str+2,p1)是什么意思
附加目标字符串到指定字符串后 在这是将p1的字符串附加到str中 选D

关于strcpy、strcat的用法
strcat(p1+1,p2+2)这一句吧P2指向的字符串从第下标为2开始连接到p1指向的字符串下标1开始的位置,但不会覆盖也就是如果P1下标为1位置有数据的话那么就往后链接,所以结果是twothree,并返回P1+1,然后strcpy函数把P1+1处以后的字符都复制给str+2即str字符串下标为2开始的位置,所以结果为onworee...

C语言,41题详细解释
strcat(p1,p2) ;返回结果abcabc strcpy( str+1, strcat(p1,p2) ) str【0】='a' 从第二位开始赋值abcabc,所以,结果为aabcabc,选 C

C语言\/指针\/程序中第五行的str+2什么意思
str是字符数组,数组名代表地址,这里的str+2就是代表str[2]

C语言指针拼接函数问题,求教大神
p2+1,也就是p2向后移动一个字符位置的指针作为一个字符串的起始指针,即字符串为"BCD"该函数调用将p1+2作为目的串,p2+1作为源串,将后者连接到前者的后面,则连接后为"cdBCD"。strcpy(str+2, ...)该函数调用将 后面的串"cdBCD"复制到前者str+2,即"z"的位置,这是一种覆盖复制。则'z'...

C语言中strcpy和strcat函数的运用,求详解?谢谢
如果没报错,应该是:xyabBCD 但这样写可能会导致内存乱 strcat(p1+2,p2+1) 此句执行后 p1为:abBCD,已经超出了 p1 分配的内存长度

相似回答