x281011140 2017-07-29 01:28 采纳率: 0%
浏览 785

这个字串符追加会为什么会出错!我是按K&R练习里面写的

#include
#include

void strcat1(char *s, char *t);
int main()
{
char a[] = "bbbbbbbbbb";
char b[] = "1111111111a B";
strcat1(a,b);
printf("%s", a);
}

void strcat1(char *s, char *t)
{

while(*s != '\0')
    s++;

while(*t != '\0'){
*s = *t;
s++;
t++;
}
}


为什么我改里面a[]和b[]的值输入出会不一样呢?就这个代码运行会多出个尾巴 11111a B

  • 写回答

1条回答 默认 最新

  • 内核之道 PostgreSQL领域优质创作者 2017-07-29 03:30
    关注
     1.不知道楼主使用的哪个版本的编译器,既然还能够成功的运行;你这段代码会出现段错误,char a[] = "bbbbbbbbbb"; 你没有显示的为数组分配空间
     大小,因此编译器会根据后面的字符串大小来计算出其字符串长度,并且将该长度作为字符数组的大小;你想要实现的功能是字符串的连接功能,所以
     前提条件是a(dst目标数组)的空间大小必须要能够足够大,至少要能够容纳下a+b两个字符串的长度大小再+\0大小;很显然你这里条件不满足;
    2.解决方法是显示指定数组a的大小,取一个大一些的空间,便可成功完成;
    
    评论

报告相同问题?

悬赏问题

  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误