leggere file .csv da sd card

Dovresti fare una cosa simile se hai già la parte che ti inizializza la sd, controllo errori ecc

void read_sd_config()
{ 
  String ReadLine;
  char charBuf[40];
    
  if(file.open(&root, "file.csv", O_READ))  
  {
   int16_t c;
       while ((c = file.read())>0)
       {
         ReadLine += (char)c;         
           if((char)c=='\n') 
           {                 
                 //--------------------------------------- LETTURA LINEE FILE-------------------------------                           
                 Serial.print(ReadLine);//debug                
                 //-----------------------------------------------------------------------------------------  
                             
                ReadLine.toCharArray(charBuf, 40);                        
                get_data(charBuf);     
                 ReadLine=""; 
           }         
       }
   }

    else 
    {
       Serial << F("File inesistente o errore SD ");            
    }       
}

void get_data(char *charBuffer)
{  
  int temp_dato[]= {0,0,0,0}; //<<<<< (int) se usi numeri oltre il 255 altrimenti byte 
  char *p = charBuffer;  
  byte i = 0;

  while (*p != '\0') 
  {
    if (*p == ',') { ++i;  ++p;  continue;} // separatore usa quello che ti pare
    if (isdigit(*p)) //questo controlla che siano solo numeri, se c'e' una lettera o uno spazio vuoto la salta
    {
         temp_dato[i] *= 10; 
         temp_dato[i] += (*p - '0');            
    }    
    ++p;
  }  
    
//--------------------test di lettura dell'array verifica se e' corretta la scrittura 
  for (byte ii = 0; ii < 4; ii++)
  {
      Serial.println((String)temp_dato[ii]+" ");//debug
  }
//---------------------------------------------------------------------
}

Per leggere l'ultima riga io di solito piazzo un EOF (end of file) alla fine, altrimenti non trova l'ultimo /n
Il char buffer l'ho impostato a 40, se la tua riga supera tale valore aumentalo, ma non esagerare

ciao