Страница 1 из 1

Динамическое имя файла FATFS (CubeMX)

Добавлено: Пн авг 22, 2022 22:34:07
DataLife
Друзья, здравствуйте.
Нужно чтобы имя создаваемого FATFS файла было не статическим, а динамическим, допустим "день_месяц-год.txt".
В статике всё работает, имя файла я задаю массивом char fName[] = "sens_table.txt\0";

Определяется он тут: fR = f_open(&file, fName, FA_OPEN_ALWAYS|FA_WRITE|FA_READ);

Пробовал делать так: sprintf (fName, "%d-%d-%d-%d.txt ", sDate.Date, sDate.Month, sDate.Year, sTime.Seconds);

FATFS ругается и не создаёт файл.

Пробовал форматировать другой архив и копировать его в нужный: memcpy (fName, wtext, sizeof(fName)); - не работает, та же ошибка.

Подскажите, как правильно это сделать?

Re: Динамическое имя файла FATFS (CubeMX)

Добавлено: Пн авг 22, 2022 22:56:11
Аlex
Дык, это ... Длину массива то не указали :roll:

Добавлено after 52 seconds:
DataLife писал(а):та же ошибка
Покажите хоть её нам.

Re: Динамическое имя файла FATFS (CubeMX)

Добавлено: Пн авг 22, 2022 23:03:48
Martian
динамическое имя может укладываться в рамки статичного массива, если меняются лишь символы, а не их количество, и тогда это одна задача.
а может не укладываться, и тогда это другая задача, которая может звучать как "динамические массивы в С++"

Re: Динамическое имя файла FATFS (CubeMX)

Добавлено: Пн авг 22, 2022 23:09:35
azhel12
Чисто на всякий случай: в приведенном коде в форматной строке при вызове snprintf после "txt" у вас пробел.

Re: Динамическое имя файла FATFS (CubeMX)

Добавлено: Чт авг 25, 2022 21:23:31
DataLife
Здравствуйте, друзья. не знаю точно как, но всё получилось.
Заново всё написал, хотел посмотреть ошибку, что ответить Аlex'у, но всё успешно записывается.
На счёт "пробела" в конце - то был эксперимент, кстати в рабочем варианте нет пробела.
Размер массива указал 35 на всякий ...
Работает!