Le plus simple: Mettez un ‘\0’ en position 8 dans le buffer - ça marque la fin de la chaîne et les caractères des 0 à 7 seulement seront affichés (ou en 8+1+3=12 pour avoir la totale). si le nom était plus court alors vous avez mis un zéro dans le buffer après la fin de la chaîne et à l'affichage ça ne change rien, s'il était plus long vous avez alors tronqué la chaîne à cet endroit en insérant le caractère de fin de chaîne.
si vous ne souhaitez pas afficher l'extension du nom de fichier (par exemple parce que toutes vos extensions (genre xxx.txt ou yyyy.log) sont les mêmes) mais que vous ne savez pas quelle est la longueur du nom avant l'extension, ce que vous voulez faire c'est remplacer le '.' par le caractère de fin de chaîne. pour cela il y a la fonction [url=http://www.cplusplus.com/reference/cstring/strchr/]strchr()[/url] qui retourne un pointeur sur la première occurence d'un caractère donné dans la chaîne passée en paramètre.
voici un exemple:
char message1[] = "20171016.log";
char message2[] = "16oct.log";
void setup() {
Serial.begin(115200);
Serial.print("message 1 Avant: "); Serial.println(message1);
Serial.print("message 2 Avant: "); Serial.println(message2);
char * ptr1 = strchr (message1, '.' ); // on cherche un '.' dans la c-string message1
char * ptr2 = strchr (message2, '.' ); // on cherche un '.' dans la c-string message2
if (ptr1) {
// si le pointeur est non nul c'est qu'on a trouvé le '.'
*ptr1 = '\0'; // on remplace le point par le marqueur de fin de chaîne
}
if (ptr2) {
// si le pointeur est non nul c'est qu'on a trouvé le '.'
*ptr2 = '\0'; // on remplace le point par le marqueur de fin de chaîne
}
Serial.print("message 1 Apres: "); Serial.println(message1); // message1 a été tronqué pour l'affichage
Serial.print("message 2 Apres: "); Serial.println(message2); // message2 a été tronqué pour l'affichage
}
void loop() {}