我的 strcat() 不行。
答案:2 悬赏:20
解决时间 2021-02-18 05:38
- 提问者网友:小姐请专情
- 2021-02-17 15:33
我的 strcat() 不行.我试了 char *s1 = "Hello, "; char *s2 = "world!"; char *s3 = strcat(s1, s2); 但是我得到了奇怪的结果。
最佳答案
- 二级知识专家网友:迷人小乖乖
- 2021-02-17 16:11
C 没有提供自动管理的字符串类型。C 编译器只为源码中明确提到的对象分配空间 (对于字符串, 这包括字符数组和串常量)。程序员必须为字符串连接这样的运行期操作的结果分配足够的空间, 通常可以通过声明数组或调用 malloc() 完成。
strcat() 不进行任何分配; 第二个串原样不动地附加在第一个之后。因此, 一种解决办法是把第一个串声明为数组:
char s1[20] = "Hello, ";
由于 strcat() 返回第一个参数的值, 本例中为 s1, s3 实际上是多余的; 在 strcat() 调用之后, s1 包含结果。
提问中的 strcat() 调用实际上有两个问题: s1 指向的字符串常数, 除了空间不足以放入连接的字符串之外, 甚至都不一定可写。
strcat() 不进行任何分配; 第二个串原样不动地附加在第一个之后。因此, 一种解决办法是把第一个串声明为数组:
char s1[20] = "Hello, ";
由于 strcat() 返回第一个参数的值, 本例中为 s1, s3 实际上是多余的; 在 strcat() 调用之后, s1 包含结果。
提问中的 strcat() 调用实际上有两个问题: s1 指向的字符串常数, 除了空间不足以放入连接的字符串之外, 甚至都不一定可写。
全部回答
- 1楼网友:恕我颓废
- 2021-02-17 16:53
请参照这个写
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯