OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3413|回复: 8

文件系统读取文件内容,存放到数组和指针,内容不一样,求解答.

[复制链接]

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2012-11-4
在线时间
2 小时
发表于 2015-9-9 08:59:59 | 显示全部楼层 |阅读模式
5金钱
最近在搞读取文件系统的文件内容,但是读取的内容存放在数组和存放在指针里面,通过串口发出来是数据是不一样的,请大神指教,问题出现在哪里?
存放在数组的读取代码:
[mw_shl_code=c,true]uint8_t R_data[100]; uint32_t bwr; f_open(file, pch_file, FA_OPEN_EXISTING | FA_READ) ; //打开文件 Buff_Counter = f_size(file); //获取文件的大小 f_read(file, R_data, Buff_Counter,&bwr); //读取文件内容 for(i = 0; i <= Buff_Counter; i++) USART2_SendChar(R_data); //通过串口发送到电脑 f_close(file); //关闭文件[/mw_shl_code]
通过数组的方式,串口显示的数据和写进去文件的内容是一样的.

存放在指针的读取代码"
[mw_shl_code=c,true]uint8_t *R_data; uint32_t bwr; f_open(file, pch_file, FA_OPEN_EXISTING | FA_READ) ; //打开文件 Buff_Counter = f_size(file); //获取文件的大小 f_read(file, R_data, Buff_Counter,&bwr); //读取文件内容 for(i = 0; i <= Buff_Counter; i++) USART2_SendChar(R_data); //通过串口发送到电脑 f_close(file); //关闭文件[/mw_shl_code]
读取的代码是一样的,只是将数组改成了指针,但是串口助手显示是却是乱码.
请大神指教,问题出在哪里?万分感谢...

最佳答案

查看完整内容[请看2#楼]

指针初始化一下,这样不初始化是不是成了野指针了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-9-9 09:00:00 | 显示全部楼层
指针初始化一下,这样不初始化是不是成了野指针了
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2012-11-4
在线时间
2 小时
 楼主| 发表于 2015-9-9 09:00:00 | 显示全部楼层
初始化成空指针是不行的,不知道为什么。用内存管理分配内存是可以的,之前不行是因为没有进行内存管理的初始化。
回复

使用道具 举报

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2012-11-4
在线时间
2 小时
 楼主| 发表于 2015-9-9 10:52:08 | 显示全部楼层
求解答...
回复

使用道具 举报

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2012-11-4
在线时间
2 小时
 楼主| 发表于 2015-9-9 11:42:53 | 显示全部楼层
回复【3楼】龙之谷:
---------------------------------
你好,感谢你的帮助.我试过了,无论是初始化为空指针还是为其分配内存,结果都是一样的.
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-9-9 14:00:45 | 显示全部楼层
结果一样,你截个图啊
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2012-11-4
在线时间
2 小时
 楼主| 发表于 2015-9-10 20:08:57 | 显示全部楼层
结果都是乱码.


正确的结果应该是这样子的

回复

使用道具 举报

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2012-11-4
在线时间
2 小时
 楼主| 发表于 2015-9-10 20:09:25 | 显示全部楼层
回复【5楼】龙之谷:
---------------------------------
一样都是乱码.
回复

使用道具 举报

1

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
352
金钱
352
注册时间
2012-11-8
在线时间
44 小时
发表于 2015-9-28 22:23:53 | 显示全部楼层
uint8_t  R_data_Len = 100;
uint8_t *R_data = NULL;
R_data = (uint8_t *)malloc(R_data_Len);
if(NULL == R_data) return 1;
memset(R_data, 0, R_data_Len);
...................
...................
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 07:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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