|
刚学着移植fatfs,有很多地方都不是很明白,假如在Micro SD中建立了2个txt文本文件,文件A.txt和文件B.txt,使用下面所示的代码,其中可以很准确的读出路径名,但是不能将 文件A.txt和文件B.txt中的内容输出,得到的结果如下所示:
f_mount(&fs , &m_num , 1);
if(f_opendir(&dirs , path) == FR_OK)
{
UART_Print("open dir OK\n");
while(f_readdir(&dirs , &finfo) == FR_OK)
{
if(finfo.fattrib & AM_ARC)
{
if(!finfo.fname[0])
{
break;
}
UART_Print("当前路径文件名:%s\n" , finfo.fname);
res = f_open(&fsrc, finfo.fname, FA_OPEN_EXISTING | FA_READ);
res = f_read(&fsrc, buffer, sizeof(buffer), &br);
UART_Print("\r\n%s\r\n", buffer); }
}
}
////////////////////////////////////////////////////////
结果:
当前路径文件名:文件A.TXT
当前路径文件名:文件B.TXT
文件A:1、2、3
////////////////////////////////////////////////////////
从得到的结果中可以看到,当文件A的路径名打印出来后,并没有将文件内容输出,而是输出了\r\n,Debug的时候也发现buffer为,打印完文件B这个目录后执行f_read函数会得到文件A.TXT这个里面的内容,并不是文件B里面的内容,最后结束程序。
问题如下:
(1)我想要代码表达的意思是:打开文件A.TXT这个文件,将这个文件里面的内容通过f_read()函数转移到buffer数组里面(长度为512)然后输出,完了以后接着打开文件B.TXT,然后将里面的内容输出,但是上面的代码并没有按照这样去执行,可否帮忙分析分析,谢谢!
(2)f_read()函数的第三个参量,就是代码中的br究竟是干嘛用的?我看这个函数的应用,感觉没有完全理解清楚,希望可以指导指导!
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
该献的血还是要献的。你不献他不献。难道让我去献? --- 出自坛友:lovejp1981
|