#include <stdio.h>
#include <string.h>
int main()
{
char s1[]="harry ";
char s2[]="is a friend of ";
char s3[]="ravi";
char s4[20];
char s5[20];
strcpy(s4,strcat(s1,s2));
strcpy(s5,strcat(s4,s3));
printf("%s", s5);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么我在这里遇到分段错误为什么它不使用 printf 打印..?
我尝试使用 printf 它没有打印,但使用 put 它打印为什么这样?请有人告诉我这有什么问题
strcat()将连接的字符串放入其第一个参数中。由于s1的长度仅足以容纳初始化时使用的字符串,因此在连接到自身时不能将其用作目标。
您应该复制第一个字符串,然后在目标中连接第二个字符串,而不是用作strcat()的源。strcpy()
您还需要增大目标字符串,以便它们有空间容纳最终字符串(包括终止 null)。
#include <stdio.h>
#include <string.h>
int main()
{
char s1[]="harry ";
char s2[]="is a friend of ";
char s3[]="ravi";
char s4[30];
char s5[30];
strcpy(s4, s1);
strcat(s4, s2);
strcpy(s5, s4);
strcat(s5, s3);
printf("%s\n", s5);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
您可以通过动态声明大小来确保目标字符串足够长:
char s4[sizeof s1 + sizeof s2];
char s5[sizeof s4 + sizeof s3];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
136 次 |
| 最近记录: |