botanicus:
Bonsoir J-M-L (et les autres...) !
Bonsoir!
botanicus:
Résultat des courses :
Après adaptation du sketch à mon contexte, il fonctionne très bien.
Je n'ai plus qu'à l'intégrer dans mon projet. Encore merci !
Bonne nouvelle ![]()
botanicus:
Dans la fonction affiFichier() je ne comprends pas tout :
D'abord la valeur retournée de type char * : je pense qu'il s'agit d'un pointeur vers une adresse constante qui contiendra le nom du fichier renvoyé. Il faut que j'approfondisse mes connaissances dans le domaine des pointeurs.
exactement. je déclare un tableau de caractère, que je ne rends pas global (on pourrait mais je préfère qu'il reste caché dans la fonction :)) et la fonction retourne un pointeur sur cette zone (l'adresse de la case mémoire du début du tableau). Une chaîne de caractère en C ou C++ si on n'utilise pas les Strings c'est simplement un tableau de caractères terminé par un caractère num noté '\0' (c'est à dire on met 0 dans la case mémoire). On appelle cela un c-string
botanicus:
Puis la constante maxFileLength = 20 et le tableau nomDuFichier[] : s'il s'agit de la taille maxi du nom de fichier, pourquoi 20 ? Je croyais qu'on ne pouvait pas dépasser 8 caractères (+ 3 pour l'extension).
si vous utilisez la librairie SDFat, elle supporte les noms longs - j'ai mis 20 comme ça un peu arbitrairement - mais oui dans votre cas on pourrait se contenter de à 8+3+1 (pour le point) et + 1 pour le '\0' qui marque la fin
botanicus:
Et enfin la fonction strncpy() que je ne connais pas ; que renvoi-t-elle exactement ?
c'est une fonction qui copie au maximum n caractères d'une c-string dans une autre c-string. vous lui donnez donc en paramètre les 2 c-strings et le nombre max de caractères à copier (cf la doc). il y a un petit cas particulier si la chaine source est trop longue alors la fonction n'écrit pas le '\0', c'est pour cela que je le rajoute à la main dans la destination.
botanicus:
A ce propos, où peut-on trouver toutes ces fonctions spéciales qui ne sont pas mentionnées même dans la référence étendue Arduino ?
oui parce que ça n'a rien à voir particulièrement avec le monde Arduino. ce sont des fonctions standards du monde du C ou C++. Vous pouvez aller voir par exemple ces listes de fonctions fréquentes : stdlib.h et string.h qui travaillent sur des c-strings
bon courage !