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

标签 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。

最佳答案

您的方法行不通,原因如下:

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/

相关文章:

c++ - 在堆上从二进制数组转换为多维数组

string - 如何获得耗时(以毫秒为单位)

c - 如何显示另一个结构的列表结构?

pointers - 我应该在 struct 字段上还是在 struct 上创建指针?走

c++ - 如何读取 C/C++ 中的结构类型

c - printf 是否消耗 C 中的堆栈帧?

谁能解释为什么我在 C 中对按位和和或运算符得到相同的结果

JavaScript - 替换和创建变量

c - 经常为字符串重新分配内存是一种好习惯吗?

c++ - 如何在现代 C++ 中表达引用关系而不表达所有权?