Copiando una cadena de un puntero a una cadena
Estoy desarrollando un código que lee los nombres de archivo de una tarjeta SD (usando FatFs) y los muestra en la pantalla. Aquí hay un fragmento de lo que tengo trabajando, esto imprime los archivos en la tarjeta como se esperaba -
FRESULT result;
char *path = '/'; //look in root of sd card
result = f_opendir(&directory, path); //open directory
if(result==FR_OK){
for(;;){
result = f_readdir(&directory, &fileInfo); //read directory
if(result==FR_OK){
if(fileInfo.fname[0]==0){ //end of dir reached
//LCD_UsrLog("End of directory.\n");
break;
}
if(fileInfo.fname[0]=='.')continue; //ignore '.' files
TCHAR *fn_ptr; //file name, why a pointer?
fn_ptr=&fileInfo.fname; //get file name
LCD_UsrLog("%s\n",fn_ptr);
for(delay=0;delay<0x0FFFFF;delay++){ShortDelay();} //delay to display
}//end result==fr_ok
}//end for
}//end result==fr_ok
Dónd
typedef char TCHAR
typedef struct {
DWORD fsize; /* File size */
WORD fdate; /* Last modified date */
WORD ftime; /* Last modified time */
BYTE fattrib; /* Attribute */
TCHAR fname[13]; /* Short file name (8.3 format) */
} FILINFO;
Necesito copiar los nombres de los archivos en una matriz para procesarlos. Sin embargo, lo he intentado de varias maneras pero parece que no puedo hacer que la matriz funcione. Intenté crear una matriz arbitrariamente grande de TCHAR y desreferenciar el puntero del nombre del archivo, pero esto imprime basura.
FRESULT result;
char *path = '/'; //look in root of sd card
TCHAR fileList[50];
u32 index=0;
result = f_opendir(&directory, path); //open directory
if(result==FR_OK){
for(;;){
result = f_readdir(&directory, &fileInfo); //read directory
if(result==FR_OK){
if(fileInfo.fname[0]==0){ //end of dir reached
//LCD_UsrLog("End of directory.\n");
break;
}
if(fileInfo.fname[0]=='.')continue; //ignore '.' files
TCHAR *fn_ptr; //file name, why a pointer?
fn_ptr=&fileInfo.fname; //get file name
fileList[index]=*fn_ptr;
LCD_UsrLog("%s\n",fileList[index]);
for(delay=0;delay<0x0FFFFF;delay++){ShortDelay();} //delay to display
index++;
}//end result==fr_ok
}//end for
}//end result==fr_ok
Supongo que esto es un simple error con respecto a los punteros o el uso adecuado de una variedad de caracteres, ¡pero han pasado más de 4 años desde la última vez que toqué C y estoy perdido!
Cualquier ayuda sería muy apreciada.