jhq999 发表于 2022-10-6 21:52:55

正天圣人 发表于 2022-10-6 21:49
a为空啊

你的问题jackz007大神已经解释了

jhq999 发表于 2022-10-6 21:54:39

正天圣人 发表于 2022-10-6 21:49
a为空啊

你是幸运,未初始化的a='\0'

正天圣人 发表于 2022-10-6 21:55:05

jhq999 发表于 2022-10-6 21:52
你的问题jackz007大神已经解释了

刚刚我这里不显示。。。。

正天圣人 发表于 2022-10-6 21:57:46

jackz007 发表于 2022-10-6 21:20
这样处理:

大佬,我不是要正确答案啊,我想知道为什么我在运行
      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的值为什么会变化

正天圣人 发表于 2022-10-6 21:58:27

jhq999 发表于 2022-10-6 21:54
你是幸运,未初始化的a='\0'

我上个代码也是这样写的,结果一样的

jackz007 发表于 2022-10-6 22:07:57

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

      因为在执行 strcat(a , a1) 的时候,如果发生 a[] 越界,那么,越出部分的字符就会侵占相邻变量的存储空间,导致相关变量的数值发生非预期改变,这就是数组越界带来的危害,是我们写代码第一个要避免出现的问题。

jhq999 发表于 2022-10-6 22:08:28

正天圣人 发表于 2022-10-6 21:58
我上个代码也是这样写的,结果一样的

越界了把变量c、d的内存覆盖了

正天圣人 发表于 2022-10-6 22:11:47

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

谢谢大佬,我明白了

正天圣人 发表于 2022-10-6 22:12:19

jhq999 发表于 2022-10-6 22:08
越界了把变量c、d的内存覆盖了

谢谢大佬,我明白了
页: 1 [2]
查看完整版本: 大佬们为什么c一直变啊