搜索
bottom↓
回复: 18

关于main函数中定义局部数组后,调用strcpy的问题

[复制链接]

出0入0汤圆

发表于 2013-4-1 20:13:19 | 显示全部楼层 |阅读模式
本帖最后由 电子学习员 于 2013-4-1 22:40 编辑


今天调试门控器系统,在main函数中定义了一个20字节大小的数组,然后调用了strcpy,复制了一个字符串给这个数组。系统运行后,测试障碍物探测功能,好像门控器失控了,并且门控器还复位。  我把数组定义成全局的就没事了,定义成局部的,测试几次就会出现失控问题。怎么去理解这个问题呢?各位高手怎么看?
char version[20];
strcopy(version, "VER");/*VER是软件版本号*/

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2013-4-1 20:59:57 | 显示全部楼层
没人过来看看呀

出0入0汤圆

发表于 2013-4-1 21:01:56 | 显示全部楼层
拿分 走人

出0入0汤圆

发表于 2013-4-1 21:31:25 | 显示全部楼层
不好意思, 点了举报。
看到这中无厘头的标题就特不爽。

出0入0汤圆

发表于 2013-4-1 21:36:13 | 显示全部楼层
不能再main中定义,要在
main()
{
int a
}

要改为
int a
main()
{

}

曾经因为这样出过问题,忘记是在stm8 还是在stc编程的时候

出0入0汤圆

 楼主| 发表于 2013-4-1 21:47:01 | 显示全部楼层
Vmao 发表于 2013-4-1 21:36
不能再main中定义,要在
main()
{

你还是没有讲到实质。。。不过谢谢

出0入0汤圆

 楼主| 发表于 2013-4-1 21:47:31 | 显示全部楼层
wangguanfu 发表于 2013-4-1 21:01
拿分 走人

您是什么意思。。。

出0入0汤圆

 楼主| 发表于 2013-4-1 21:48:14 | 显示全部楼层
kanprin 发表于 2013-4-1 21:31
不好意思, 点了举报。
看到这中无厘头的标题就特不爽。

题目很无厘头吗?

出0入0汤圆

 楼主| 发表于 2013-4-1 21:48:59 | 显示全部楼层
等高手来

出0入0汤圆

发表于 2013-4-1 21:49:04 | 显示全部楼层
生成的汇编你跟踪下就清楚了,你用什么mcu

出0入8汤圆

发表于 2013-4-1 21:52:15 | 显示全部楼层
本帖最后由 kebaojun305 于 2013-4-1 21:53 编辑
电子学习员 发表于 2013-4-1 21:48
题目很无厘头吗?


标题太简单的 不能说明帖子的主要内容   小心封ID  你发帖子时  没有看到红色的字吗    看看论坛规则  http://www.amobbs.com/thread-5511230-1-1.html

出0入0汤圆

发表于 2013-4-1 22:34:40 | 显示全部楼层
算了,告诉你吧, 不过你还是把标题改个明确些的。

用局部数组,使用的是栈空间,其它函数的调用会跟你这个数组公用内存空间。
所以,如果使用局部数据,需要使用memcpy,而不是strcpy
而使用全局数组时,这个数据组就由你的程序显式调用,系统不会跟你抢。
所以你用strcpy就不会有问题。

出0入0汤圆

 楼主| 发表于 2013-4-1 22:38:26 | 显示全部楼层
kanprin 发表于 2013-4-1 22:34
算了,告诉你吧, 不过你还是把标题改个明确些的。

用局部数组,使用的是栈空间,其它函数的调用会跟你这 ...

     实在抱歉,我第一次发帖,不知道咱们这儿规则,以后改,

出0入0汤圆

 楼主| 发表于 2013-4-1 22:57:11 | 显示全部楼层
kanprin 发表于 2013-4-1 22:34
算了,告诉你吧, 不过你还是把标题改个明确些的。

用局部数组,使用的是栈空间,其它函数的调用会跟你这 ...

我这个是裸机程序,没有什么操作系统,没怎么明白您说的

出0入0汤圆

发表于 2013-4-1 23:24:38 | 显示全部楼层
没见过strcopy这个函数。

出0入0汤圆

 楼主| 发表于 2013-4-1 23:29:09 | 显示全部楼层
littlemouse11 发表于 2013-4-1 23:24
没见过strcopy这个函数。

抱歉,打错了。。。

出0入0汤圆

发表于 2013-4-2 08:58:03 | 显示全部楼层
kanprin 发表于 2013-4-1 22:34
算了,告诉你吧, 不过你还是把标题改个明确些的。

用局部数组,使用的是栈空间,其它函数的调用会跟你这 ...

?????      

出20入186汤圆

发表于 2013-4-2 09:19:52 | 显示全部楼层
这个函数简单,自己写效率还高些,不就是一个循环,然后搬移

出0入0汤圆

 楼主| 发表于 2013-4-2 12:23:37 | 显示全部楼层
yuyu87 发表于 2013-4-2 09:19
这个函数简单,自己写效率还高些,不就是一个循环,然后搬移

我知道这个函数怎么写,现在的情况是什么会出现问题
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 03:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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