新手上路
- 积分
- 43
- 金钱
- 43
- 注册时间
- 2014-12-6
- 在线时间
- 0 小时
|
5金钱
问题解决 答案在8楼!
更新:今天又随便 尝试了一下 在创建文件后 立刻 写了一个字符串进去 再存储我想要的数据 发现 就没有 那个多出三个00的问题了。。。。
那么问题来了?这是为什么呢、、、、、、、、
f_mount( 0, &fatfs );
if(f_open(&file,"0:ss.txt",FA_CREATE_ALWAYS | FA_WRITE) == FR_OK)
{
printf("创建文件OK\n")
}
创建文件 已经成功了 接下来写数据
因为我 知道数据大小 每次都是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........................
.............................
|
最佳答案
查看完整内容[请看2#楼]
回复【7楼】永不fang放弃:
---------------------------------
你有没有加四字节对齐关键字哦 ????
编译器如果是keil的话,需要加 __aligned(4) __aligne(4)
如 u8 __aligne(4) buf[2*1024];
|