Solo tengo declarados los punteros como globales, yo me imagino que el probla es ese que al leer dos veces se machacan los datos pero esque no se como protegerlos, te pongo el codigo estero que esta dentro de la funcion que quiero partir en tres partes.
Yo esque vengo de programar con php y estos problemas la verdad que ahi no se tienen y me traen de cabeza.
void escritura(char fileopen[],char fileopen2[]){
if (!card.init(SPI_HALF_SPEED)) error("card.init failed");
// initialize a FAT volume
if (!volume.init(&card)) error("volume.init failed");
// open the root directory
if (!root.openRoot(&volume)) error("openRoot failed");
if (file.open(&root, fileopen, O_READ)) { }
else{
error("file.open failed");
}
char texto[33];
int n;
int16_t c;
n = 0;
while ((c = file.read()) > 0)
{
texto[n++] = c;
}
texto[n] = '\0';
puntero[0]=texto;
byte b= 0;
byte v =1;
while(texto[b]) // hasta que termine
{
if(texto[b] == '+')
{
texto[b] = '\0'; // sustituyo salto de linea por fin
puntero[v] = &texto[b+1]; // puntero al principio de la cadena
v++;
}
b++;
}
file.close();
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (file.open(&root, fileopen2, O_READ)) {
//Serial.println("Opened"+fileopen2);
//lcd.LCD_3310_write_string(1, 2, "Opened PRINT00.TXT", MENU_NORMAL);
}
else{
error("file.open failed");
}
char texto2[33];
int16_t p;
n = 0;
while ((p = file.read()) > 0)
{
texto2[n++] = p;
}
texto2[n] = '\0';
puntero2[0]=texto2;
b= 0;
int m =1;
while(texto2[b]) // hasta que termine
{
if(texto2[b] == '+')
{
texto2[b] = '\0'; // sustituyo salto de linea por fin
puntero2[m] = &texto2[b+1]; // puntero al principio de la cadena
m++;
}
b++;
}
byte h;
for(h=0;h<v;h++)
{
if(*puntero[h]==*puntero2[0]){
lcd.LCD_3310_write_string(10, 0, "Menu", MENU_NORMAL);
lcd.LCD_3310_write_string(12, 2, "^", MENU_NORMAL);
lcd.LCD_3310_write_string(12, 4, "_", MENU_NORMAL);
lcd.LCD_3310_write_string(30, 1, puntero[h-1], MENU_NORMAL);
lcd.LCD_3310_write_string(65, 2 , "*", MENU_NORMAL );
lcd.LCD_3310_write_string_big(20, 2, puntero[h], MENU_NORMAL);
lcd.LCD_3310_write_string(30, 5 , puntero[h+1], MENU_NORMAL);
}
}
file.close();
root.close ();
}
Un saludo y gracias.