Deseo guardar en cadenas char lor nombres de los ficheros que hay en una SD (hasta un tope de 55), pero no lo consigo.
Si listo los nombres con openNextFile() utilizando el ejemplo listFiles de la librería SD, me dice que hay 10 ficheros, y muestra los nombres uno a uno por consola.
#define MAXFILES 55
char names[14][MAXFILES];
int x;
void listFiles2(File dir)
{
x = 0;
while(true)
{
File entry = dir.openNextFile();
if (! entry) break;
x++ ;
if(x == MAXFILES - 1) break;
Serial.println(entry.name());
entry.close();
}
Serial.print(x);
Serial.println(" ficheros en la SD");
}
Pero si listo los nombres copiándolos en names[][], no muestra ningún nombre por consola y me dice que hay 0 ficheros, o sea, dir.openNextFile() da error
#define MAXFILES 55
char names[14][MAXFILES];
int x;
void listFiles2(File dir)
{
x = 0;
while(true)
{
File entry = dir.openNextFile();
if (! entry) break;
strcpy(names[x],entry.name()); // --- esta línea es la que estropea todo ---
x++ ;
if(x == MAXFILES - 1) break;
Serial.println(entry.name());
entry.close();
}
Serial.print(x);
Serial.println(" ficheros en la SD");
}
¿Tenéis alguna sugerencia de por qué la línea que contiene strcpy() produce ese comportamiento anómalo?
[win xp, ide arduino 1.0.5, tarjeta Nano V3.0 ATmega328 16M]