第2个回答 2019-06-10
我也试了一下,没问题,你到底是什么问题,是要在s1或s2中输入空格吗?那么用gets函数;
gets()函数用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加'\0'字符。
其调用格式为:gets(s);
其中s为字符串变量(字符串数组名或字符串指针)。
gets(s)函数与scanf("%s:",&s)/* scanf("%s",s) */相似,但不完全相同,使用scanf("%s",&s);函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。
你改为:
#include<stdio.h>
void main()
{ char s1[50],s2[50];
gets(s1);
gets(s2);
printf("%s\n",s1);
printf("%s\n",s2);
}
这样就用回车表示输入结束
追问我只是想知道为何会出现我发的图片的结果
第3个回答 2019-10-03
char *p1="abcd", *p2="ABCD", str[50]="xyz";
strcpy(str+2,strcat(p1+2,p2+1));//将p2+1连接到p1+2后面,再拷贝到str+2里面
printf("%s",str);//p1+2
为cd
//p2+1
为BCD
strcat(p1+2,p2+1)
为
cdBCD
str+2
为z
strcpy(str+2,strcat(p1+2,p2+1))//
为xycdBCD
此处z被覆盖了
第4个回答 2019-06-11
p1
p2
str
记录的都是字符串的首地址
strcat拼接字符串,
p1位置是‘a’,+2,后移2个
到'c'
得到cd
p2位置是‘A’,+1,后移1个
到'B'
得到BCD
拼接为
cdBCD
strcpy复制字符串
str位置是'x'
+2
后移2个
到‘z’位置
从‘z’位置开始复制,cdBCD就替换了“xyz”
从z以后的所有
所有就得
xycdBCD