Как записать отдельные данные в spiffs?

typedef struct book {
char title[20];
 char author[20];
 int pages[10];

} Book;

Book b1 = {"The Zahir","Paulo Coelho",336,0};

при записи этой структуры в SPIFFS ESP8266 я использую функцию

filename.write( (const uint8_t*)&b1, sizeof(b1));

но как записать отдельные данные, например название книги, в структуру spiffs?

, 👍0

Обсуждение

рецензенты, не закрывайте вопрос. есть хороший ответ Маженко. только ОП частично удалил текст вопроса. Я откатил его обратно., @Juraj


1 ответ


1

В такой ситуации лучше всего рассматривать ваши данные как записи в базе данных. Чтобы изменить одну часть записи, вы читаете всю запись, меняете значение, а затем записываете эту запись обратно.

int record = 4; // какую запись вы хотите изменить

struct book b; // Временное хранилище для редактирования данных

// Переходим к записи и читаем ее
filename.seek(record * sizeof(struct book));
filename.read( (const uint8_t*)&b, sizeof(struct book));

// Изменяем данные
strcpy(b.title, "Winnie The Pooh");

// Снова переходим к записи и записываем ее
filename.seek(record * sizeof(struct book));
filename.write( (const uint8_t*)&b, sizeof(struct book));
,