我无法使用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。
答案 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";