Skip to content

Instantly share code, notes, and snippets.

@CelliesProjects
Last active March 30, 2025 11:19
Show Gist options
  • Save CelliesProjects/7fab9013517583b3a0922c0f153606a1 to your computer and use it in GitHub Desktop.
Save CelliesProjects/7fab9013517583b3a0922c0f153606a1 to your computer and use it in GitHub Desktop.
Read and write a c++ struct to a file. Arduino IDE. ESP32.
/*
* EXAMPLE READING AND WRITING A C++ STRUCT TO A FILE
*/
#include <FS.h>
#include <FFat.h>
const char *fileName = "/somefile.txt";
struct aStruct {
char someString[11];
float someFloat;
};
void setup() {
if (!FFat.begin()) {
log_e("FFat Mount Failed");
while (1)
delay(100);
}
aStruct firstStruct = { "1234567890", 1.7 }; // String is 10 chars plus a terminator '\0'
log_i("struct size: %i", sizeof(aStruct));
File file = FFat.open(fileName, FILE_WRITE);
const size_t bytesWritten = file.write((byte *)&firstStruct, sizeof(firstStruct));
file.close();
if (bytesWritten < sizeof(aStruct)) {
log_e("Write error");
}
}
void loop() {
aStruct secondStruct = { "----------", 0.0 };
File file = FFat.open(fileName, FILE_READ);
const size_t bytesRead = file.read((byte *)&secondStruct, sizeof(secondStruct));
log_i("file size: %i", file.size());
if (bytesRead < file.size()) {
log_e("Read error");
}
file.close();
log_i("Data: %s, %.2f\n", secondStruct.someString, secondStruct.someFloat);
while (1)
delay(100);
}
@logowe
Copy link

logowe commented Mar 30, 2025

OK, thats a good idea! I will try it. Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment