<分区>
我不能使用 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。
<分区>
我不能使用 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。
最佳答案
您的方法行不通,原因如下:
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="再见";
关于c - 我似乎不知道如何使用 strcat 连接两个 char 指针字符串,这不正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55394455/