Copiar uma string de um ponteiro para uma string
Estou desenvolvendo um código que lê nomes de arquivos de um cartão SD (usando FatFs) e os exibe na tela. Aqui está um trecho do que eu estou trabalhando, isso imprime os arquivos no cartão conforme o esperado -
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
Ond
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;
Preciso copiar os nomes dos arquivos em uma matriz para processamento, no entanto, tentei algumas maneiras, mas não consigo fazer com que a matriz funcione. Eu tentei criar uma matriz arbitrariamente grande de TCHARs e desreferenciar o ponteiro do nome do arquivo, mas isso imprime lix
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
Suspeito que seja um erro simples em relação a ponteiros ou ao uso adequado de uma matriz de caracteres, mas já faz mais de 4 anos desde que toquei C pela última vez e estou perdid
Qualquer ajuda seria muito apreciada