请问下这个是怎么走过来的?为什么这么走呢?C语言
答案:5 悬赏:40 手机版
解决时间 2021-02-09 15:54
- 提问者网友:愿为果
- 2021-02-09 04:59
main( ){ char b[30]; strcpy(&b[0],"CH"); strcpy(&b[1],"DEF"); strcpy(&b[2],"ABC"); printf("%s \n",b);}结果是CDABC[0]C[1]D[2]ABC输出的是前面2个??为什么这么走发?
最佳答案
- 五星知识达人网友:风格不统一
- 2021-02-09 05:35
执行 strcpy(&b[0],"CH"); 时,
b[0] = ' C ', b[1] = ' H ' 。
执行 strcpy(&b[1],"DEF"); 时,
b[1] = ' D ', b[2] = ' E ', b[3] = ' F '
其中字符 ' D ' 覆盖了第一次赋给的字符 ' H '
执行 strcpy(&b[2],"ABC"); 时,
b[2] = ' A ', b[3] = ' B ', b[4] = ' C '
其中字符 ' A ' 覆盖了第一次赋给的字符 ' E '
其中字符 ' B ' 覆盖了第一次赋给的字符 ' F '
所以输出结果为: CDABC
全部回答
- 1楼网友:酒醒三更
- 2021-02-09 09:18
因为你strcpy里用的是数组的地址,所以他会自动往后存储,楼上的楼上说的很详细了
- 2楼网友:患得患失的劫
- 2021-02-09 09:10
char是单字符数组 ch def abc都不是单字符 所以你copy的时候会自动存储第一个字符
- 3楼网友:狂恋
- 2021-02-09 08:00
你好!
覆盖了
char b[30];
strcpy(&b[0],"CH");
printf("%s \n",b);
strcpy(&b[1],"DEF");
printf("%s \n",b);
strcpy(&b[2],"ABC");
printf("%s \n",b);
一条一条单独 运行输出 应该可以看到
如果对你有帮助,望采纳。
- 4楼网友:洎扰庸人
- 2021-02-09 06:44
覆盖了
char b[30];
strcpy(&b[0],"CH");
printf("%s \n",b);
strcpy(&b[1],"DEF");
printf("%s \n",b);
strcpy(&b[2],"ABC");
printf("%s \n",b);
一条一条单独 运行输出 应该可以看到
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯