原子求助,急急急急急急!!!!FATFS 为什么用f_write 写数据发现 每次写 开头都多出 三个00 00 00 ????

2019-07-21 04:15发布

问题解决  答案在8楼!


更新:今天又随便  尝试了一下  在创建文件后 立刻  写了一个字符串进去   再存储我想要的数据   发现   就没有 那个多出三个00的问题了。。。。

那么问题来了?这是为什么呢、、、、、、、、


f_mount( 0, &fatfs );


if(f_open(&file,"0:ss.txt",FA_CREATE_ALWAYS | FA_WRITE) == FR_OK)
     { 
              printf("创建文件OK ")
      }
创建文件  已经成功了   接下来写数据
因为我 知道数据大小 每次都是2K字节  sizebuff就是1024*2
res= f_write (&file,buff,sizebuff,(void *)&bytesWritten);
当我写完  关闭文件之后 把U盘 插在电脑上 用16进制编辑器 打开
发现文件每  间隔2K字节 头三个数据  都是  00  00  00  这不是我的数据,莫名其妙产生的
同时导致  我的buff 包里面  最后 三个数据 被挤掉 没写入文件。
以前并没有这个问题的,现在不知道为什么   多了这个问题,求助各路大神
                |文件开头
                |
                |
               /
--------》  00  00  00  57 19 27 .........
               ..............
2K            ...........
               ..........
--------》  00  00  00 ................
                .................

2K

--------》00  00  00..................

2K          ....................

--------》00 00 00.................
           ..................

2K

--------》
00 00 00........................
           .............................



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
hpdell
1楼-- · 2019-07-21 05:34
回复【7楼】永不fang放弃:
---------------------------------
你有没有加四字节对齐关键字哦 ???? 

编译器如果是keil的话,需要加  __aligned(4)       __aligne(4)

如  u8 __aligne(4)  buf[2*1024];
永不fang放弃
2楼-- · 2019-07-21 08:30
回复【9楼】hpdell:
---------------------------------
真的就是四字节对齐问题,应该这样写    __align(4)   没有e
感谢  大家的帮忙!!!!
八度空间
3楼-- · 2019-07-21 14:19
 精彩回答 2  元偷偷看……
永不fang放弃
4楼-- · 2019-07-21 14:43
确实   以前 我也没碰到过  ,很奇怪  不知道什么时候 就出了这个问题
永不fang放弃
5楼-- · 2019-07-21 19:34
我试过  写2K   还是  写4K 8K  都有这个问题   每次写 数据都会 多出三个00 00 00
hpdell
6楼-- · 2019-07-21 20:44
可能需要4字节对齐哦,你定义缓存区时,加上4字节对齐试试看看

一周热门 更多>