新手上路 
 
	- 积分
 - 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]; 
 
 
 
 
 
 
 |