中易网

c,字符串中插入字符串

答案:2  悬赏:0  
解决时间 2021-02-19 23:22
main()
{
int n=2;
char a[]="abcdef";
char b[]="123";
char c[10];
int i,k,m;
k=2;
for(m=0;*(a+m)!='\0';m++)
{
*(c+m)=*(a+m);
}
*(c+m)='\0';
for(i=0;*(b+i)!='\0';i++)
{
*(a+n)=*(b+i);
n++;
}
for(k=2;*(c+k)!='\0';k++)
{
*(a+n)=*(c+k);
n++;
}
*(a+n)='\0';
printf("%s",a);

希望输出ab123cdef,实际输出ab123cdeg 请问问题在哪儿
最佳答案
问题出在数组a的长度默认是7(6个字符加个'\0'),而后面插入元素时,下标必定越界。
改的话就在定义数组a时,设置长一点。
至于'f'为什么变成'g',应该是变量n的地址与a[8]的地址一样。当最后一次循环(n=8时),*(a+n)=*(c+k)='f',但后面还有句n++,也就是a[8]++,所以'f'变成了'g'。如果在循环外面再来句n++,那就是'h'了。
全部回答
#include #include//方便在控制台打印中英文混合字符 int main() { char s[]="1234.5678"; int i=0; char*p=s; for(i=11;i>=4;i--)//第二个数字2后的字符整体后移2位以便最后放入° { s[i]=s[i-2]; } s[11]='\'';//最后放入' s[12]='\0'; printf("%d\n",sizeof(s)); printf("%s\n",s); p++; p++;//移到第二个数字2的后面以便放入° strncpy(p,"°",2); setlocale(lc_all,"chs"); printf("%s\n",s); return 0; }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
唱吧主题火锅地址在哪,我要去那里办事
那交网费要到那里交呢
算法可不可以用自然语言描述
辽宁德润白酒制造有限公司地址在什么地方,想
裕安门窗这个地址在什么地方,我要处理点事
某落地钟钟摆长为0.5m,来回摆到最大,夹角为
刚刚大一,这道高数怎么搞啊
南海区佛山石锅鱼在哪里啊,我有事要去这里
太极大药房旗舰店在什么地方啊,我要过去处理
三门的天翔冷柜耗电每小时是多少度电
五祖路我想知道这个在什么地方
看一下我主机二手多少钱 影驰gts250显卡,500
梦见一家人站翻了东西把儿子压在了下面
家里有块木头放了千年都不腐烂,而且湿过水后
鸿源洗衣怎么去啊,有知道地址的么
推荐资讯
九代雅阁2.0有电动座椅吗?
苹果手机充电器水洗还能用吗
宝康宠物这个地址在什么地方,我要处理点事
我想查看统筹账户的余额
中秋节的传统食品是圆圆的象征着团聚的月饼
运行极品飞车12提示错误
集分宝怎么抵钱啊?付款时没看到可用集分宝的
昨天晚上我喝了点酒,被老婆说了几句,然后我
烟草证到期了怎么办
请问我的手机卡已经打算不使用了,里面还有10
怎么样和你网站联系
女孩子高潮的时候对男孩子会有什么反应
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?