Lecture d'un fichier CSV depuis carte SD

Bonjour à tous,
Je travaille sur un projet dans lequel je vais devoir lire un fichier CSV stocké sur une carte SD.
Mon fichier CSV se compose dans chaque ligne de 24 caractères puis un “;” puis 10 caractères.
J’ai donc écrit un code qui lit le fichier (caractère par caractère) les 24 premiers, qu’il stocke dans un tableau, puis il passe un caractère (le “;” servant de séparation) puis les 10 caractères suivant seront stockés dans un autre tableau.
Voici le code:
(J’ai copié ici juste la partie de mon projet qui concerne la lecture de la SD mais il est évident que j’ai préalablement inclut la librairie SD, déclaré l’objet,…)
Pour l’essai, mon fichier CSV s’appelle “TableTAG.csv” et comporte une seule ligne qui contient: “abcdefghijklmnopqrstuvwx;1234567890”

// Déclaration des tableaux
char ID[24];
char nom[10]; // dans cet exemple ce tableau ne comporte que des chiffres mais à l'avenir il comportera des lettres également

// Déclaration de variable
int pos = 0; // variable utilisée pour déplacer le curseur dans le fichier

File TAGFile = SD.open("TableTAG.csv"); // Si TableTAG.csv existe sur la SD, il l'ouvre
  if (TAGFile)
  {
       
    // lecture de la SD et stockage dans les tableaux

    
    for (int x = 0; x < 24; x ++) // Lecture des 24 premiers caractères
    {
      TAGFile.seek(pos); // La variable pos permet, en l'incrémentant, d'avancer le curseur dans le fichier
      ID[x] = TAGFile.read(); // Lire un caractère et le stocker dans le premier tableau 
      pos ++; // Avancer le curseur d'un caractère
    } // fin de lecture des 24 premiers caractères
    
    pos ++; // sauter le ";"

    for (int x = 0; x < 10; x ++) // Lecture des 10 caractères suivants sur le même principe que la première boucle
    {
      TAGFile.seek(pos);
      nom[x] = TAGFile.read();
      pos ++;
    }

    
    Serial.println(ID); // A la fin j'affiche sur le port série les deux tableaux
    Serial.print(nom); 
    
   }

Voilà ce que j’obtiens sur le port série:

abcdefghijklmnopqrstuvw1234567890
1234567890

Je ne comprends pas pourquoi les chiffres apparaissent quand j’affiche le premier tableau (qui n’est censé contenir que les lettres).

Quelqu’un saurait m’expliquer ?

Je ne suis pas sur d’avoir codé de la manière la plus simple, j’ai fait avec ce que je connait et ce que j’ai pu trouver sur le site arduino. Si une autre manière de coder rend les choses plus simples je ne suis évidemment pas contre …
Je peut évidemment fournir le reste du code je ne l’ai pas mis ici pour ne pas encombrer…

Merci d’avance
Bonne journée

Bonjour,

En C les chaines de caractères sont terminées par des \0 (ou 0) Donc pour finir ta chaine il faut ajouter un 0

char ID[25]; // un caractère de plus pour le 0 final
char nom[11];
...
ID[24]=0;  // peut être avantageusement remplacé par ID[sizeof ID-1]=0;
...
nom[10]=0;

Ah oui j'avais oublié ce détail (assez important) Ca marche maintenant ! Merci beaucoup Kamill

Bonjour,

J'aimerais savoir si il est possible de lire plusieurs lignes grace a ce type de programme ??

en ajoutant des car nom2[] ?? une fonction permettant de faire sauter une ligne a la fonction seek ??

Merci