您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> 为什么字符数组存放的元素个数大于脚标?
本帖共有514个阅读者
发表帖子 发表投票 回复主题
为什么字符数组存放的元素个数大于脚标?
derekvvyx(论坛新手)
derekvvyx
头衔:社区公民
帮派:无帮无派
帖数:11
金钱:170
积分:12
注册时间:2013/8/20
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
为什么字符数组存放的元素个数大于脚标?
我使用的是BF561,使用异步存储的端口来调LCD。在deal.txt记事本里放了512个数用于连点划线。
原来运行在uclinux下的程序中有下边这句:
char path[16] = "/mnt/deal.txt";
在裸机下,我把程序修改为:
char path[16] = "F:\\deal.txt" ;
编译的时候出错,显示cc0144:  error: a value of type "char [39]" cannot be used to initialize an entity of type "char [16]"。
把path[16]改为39或更大的数,则编译、运行成功。

我不太明白,明明这个文件夹里放了512个数,为什么path这个数组只有39个元素?

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/9/29 10:47:06
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
path里面放的不是你deal.txt文件的内容,而是"F:\\deal.txt"  ,另外你检查一下其他地方有没有定义char path[39]

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/9/30 11:07:33
derekvvyx(论坛新手)
derekvvyx
头衔:社区公民
帮派:无帮无派
帖数:11
金钱:170
积分:12
注册时间:2013/8/20
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
多谢andy!其他地方没有定义char path[39]。

char是八位有符号二进制数,char path[39]就意味着"F:\\deal.txt"这个字符数组里有39个这样的数。但是那个deal.txt文件里存放的数明显要多很多呀,而且每个数的数值都比较大,比如25631。难道是这其中有什么转换机制吗?

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/9/30 15:07:33
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
如果你要读取
deal.txt内部数据,需要使用文件系统,用fopen 和fread读取。不能直接赋给数组

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/10/8 18:13:36
derekvvyx(论坛新手)
derekvvyx
头衔:社区公民
帮派:无帮无派
帖数:11
金钱:170
积分:12
注册时间:2013/8/20
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
是的,是用fopen读取之后再用fscanf命令放在数组里的

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/10/8 19:57:13
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.154258 Call, 1 Queries, Processed in 0.030762 second(s),