鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: 正天圣人

[已解决]大佬们为什么c一直变啊

[复制链接]
发表于 2022-10-6 21:52:55 | 显示全部楼层

你的问题jackz007大神已经解释了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-6 21:54:39 | 显示全部楼层

你是幸运,未初始化的a[0]='\0'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-6 21:55:05 | 显示全部楼层
jhq999 发表于 2022-10-6 21:52
你的问题jackz007大神已经解释了

刚刚我这里不显示。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-6 21:57:46 | 显示全部楼层

大佬,我不是要正确答案啊,我想知道为什么我在运行
        printf("请输入一行文本:");
        while(b!='\n')
        {
                scanf("%s",a1);
                strcat(a,a1);
                b=getchar();
                if(b==' ')
                {
                        c=1;
                        strcat(a," ");
                }
        }
中的strcat(a,a1);和strcat(a," ");的时候,我的c和d的值为什么会变化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-6 21:58:27 | 显示全部楼层
jhq999 发表于 2022-10-6 21:54
你是幸运,未初始化的a[0]='\0'

我上个代码也是这样写的,结果一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-6 22:07:57 | 显示全部楼层    本楼为最佳答案   
正天圣人 发表于 2022-10-6 21:57
大佬,我不是要正确答案啊,我想知道为什么我在运行
        printf("请输入一行文本:");
        whi ...


        因为在执行 strcat(a , a1) 的时候,如果发生 a[] 越界,那么,越出部分的字符就会侵占相邻变量的存储空间,导致相关变量的数值发生非预期改变,这就是数组越界带来的危害,是我们写代码第一个要避免出现的问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-6 22:08:28 | 显示全部楼层
正天圣人 发表于 2022-10-6 21:58
我上个代码也是这样写的,结果一样的

越界了把变量c、d的内存覆盖了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-6 22:11:47 | 显示全部楼层
jackz007 发表于 2022-10-6 22:07
因为在执行 strcat(a , a1) 的时候,如果发生 a[] 越界,那么,越出部分的字符就会侵占相邻变 ...

谢谢大佬,我明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-6 22:12:19 | 显示全部楼层
jhq999 发表于 2022-10-6 22:08
越界了把变量c、d的内存覆盖了

谢谢大佬,我明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 00:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表