我似乎不知道如何使用strcat连接两个char指针字符串,这是不正确的?

时间:2019-03-28 09:44:28

标签: c string pointers strcat

我无法使用strcat连接两个指针字符串,这不可能吗?

我尝试使用它们,例如strcat(s1,s2)和strcat(* s1,* s2),但它们仍然无法正常工作。

char *s1="Hello";
char *s2="Bye";
printf("%s\n",s1);
strcat(s1,s2);
printf("%s",s1);

当我运行它时,它会打印出strcat之前的第一个“ Hello”,但是代码不会显示剩余的输出并且不会返回0。

1 个答案:

答案 0 :(得分:3)

您的方法无法正常运行,原因有以下几种:

char *s1="Hello";

s1指向只读字符串(文字)。您无法修改。

strcat(s1,s2);

这不起作用,因为s1中没有足够的空间来添加s2。

使用:

char s1[30]="Hello";
char *s2="Bye";

strcat(s1,s2);

使用char s1[30]="Hello";,编译器为30个字符分配一个数组,然后将字符串“ Hello”复制到该数组中。未使用的元素设置为零。

使用char *s2="Bye";,编译器使s2指向只读字符串,因此要使其显式,最好编写const char *s2="Bye";