درود توی تابع f_read پارامتر آخر تعداد بایت خونده شده رو مقدار دهی می کنه . توی یک حلقه باید اونقدر از روی فایل بخونید تا اینکه مقداری که از پارامتر آخر میخونید کمتر از سایزی باشه که برای خونده شدن انتظار داشتید (پارامتر سوم سایز خوندن رو معین میکنه)
void main (void) { FATFS fs[2]; /* Work area (file system object) for logical drives */ FIL fsrc, fdst; /* file objects */ BYTE buffer[4096]; /* file copy buffer */ FRESULT res; /* FatFs function common result code */ UINT br, bw; /* File R/W count */
/* Register work area for logical drives */ f_mount(0, &fs[0]); f_mount(1, &fs[1]);
/* Open source file on the drive 1 */ res = f_open(&fsrc, "1:srcfile.dat", FA_OPEN_EXISTING | FA_READ); if (res) die(res);
/* Create destination file on the drive 0 */ res = f_open(&fdst, "0:dstfile.dat", FA_CREATE_ALWAYS | FA_WRITE); if (res) die(res);
/* Copy source to destination */ for (;;) { res = f_read(&fsrc, buffer, sizeof(buffer), &br); if (res || br == 0) break; /* error or eof */ res = f_write(&fdst, buffer, br, &bw); if (res || bw < br) break; /* error or disk full */ }
/* Close open files */ f_close(&fsrc); f_close(&fdst);
/* Unregister work area prior to discard it */ f_mount(0, NULL); f_mount(1, NULL); }
_______________________________________________________________________ پروژه های حرفه ای الکترونیک و کامپیوتر در www.khazama.com
مجموعه متن باز نامهای اصیل ایرانی
وبلاگ نوشته های شخصی من
|