Legantmar
New member
Есть в setup:
const char *text1 = "test1";
const char *text2 = "test2";
const char *text3 = "test3";
const char * texts[] = {text1, text2, text3};
Задача
Если есть файл, то "заменить" содержимое массива texts
положив в него прочитаные строки файла
Примерно так:
File file = SPIFFS.open("/newfile.txt", "r");
if (file) {
int i=0;
while(file.available()) {
String temp1 = file.readStringUntil('\n'); // читать строку до переноса строки включительно
String str = temp1.substring(0, temp1.length()-1); // отбрасываем перенос строки \n
char *chrstr = new char[str.length() + 1]; // создали массив по длине строки
strcpy(chrstr, str.c_str()); // преобразуем
texts[ i] = chrstr; // заменяем элементы
i++;
Проблема - строк может быть больше или меньше размерности определенной вначале (в этом примере = 3)
Следовательно нужно создать новый массив newarray сложить все в него,
удалить содержимое предыдущего как delete [] texts;
а затем сменить указатель texts = newarray;
но я не знаю как это сделать ((
кто знает, помогите.
p.s. вот тут есть пример, но у меня не получилось повторить для своих типов данных
const char *text1 = "test1";
const char *text2 = "test2";
const char *text3 = "test3";
const char * texts[] = {text1, text2, text3};
Задача
Если есть файл, то "заменить" содержимое массива texts
положив в него прочитаные строки файла
Примерно так:
File file = SPIFFS.open("/newfile.txt", "r");
if (file) {
int i=0;
while(file.available()) {
String temp1 = file.readStringUntil('\n'); // читать строку до переноса строки включительно
String str = temp1.substring(0, temp1.length()-1); // отбрасываем перенос строки \n
char *chrstr = new char[str.length() + 1]; // создали массив по длине строки
strcpy(chrstr, str.c_str()); // преобразуем
texts[ i] = chrstr; // заменяем элементы
i++;
Проблема - строк может быть больше или меньше размерности определенной вначале (в этом примере = 3)
Следовательно нужно создать новый массив newarray сложить все в него,
удалить содержимое предыдущего как delete [] texts;
а затем сменить указатель texts = newarray;
но я не знаю как это сделать ((
кто знает, помогите.
p.s. вот тут есть пример, но у меня не получилось повторить для своих типов данных