>> Technologie Électronique >  >> Maison intelligente >> Vie connectée

Comment lire un fichier CSV en langage C

De nombreux logiciels exportent des données au format CSV (valeurs séparées par des virgules). Ce format lisible et facile à manipuler est pratique pour transférer des données entre programmes. Les programmes C traitant des données auront souvent à lire des fichiers CSV.

Étape 1

Consultez la documentation du programme générant le CSV. Déterminez le nombre de champs par ligne et le format de chacun. Exemple : 1, "test", 34.5 → 3 champs : entier, chaîne, flottant.

Étape 2

Créez une structure avec un membre par champ. Exemple :

struct data {
    int col1;
    char *col2;
    float col3;
};

Étape 3

Créez une fonction pour lire le CSV, accessible au reste du programme, travaillant sur structures communes. Passage par référence pour éviter valeur de retour. Prototype : void ParseCSV(char *filename, data& input);

Étape 4

Incluez l'en-tête E/S standard : #include <stdio.h> (en haut du fichier source).

Étape 5

Incluez la bibliothèque de chaînes : #include <string.h>.

Étape 6

Créez un objet fichier : FILE * pInput;

Étape 7

Créez un tampon pour une ligne : #define BUFFER_SIZE 1024 puis char buf[BUFFER_SIZE];

Étape 8

Ouvrez le fichier : pInput = fopen("filename", "r");

Étape 9

Lisez une ligne : fgets(buf, sizeof(buf), pInput);

Étape 10

Analysez le CSV avec strtok. Nouveau pointeur char pour les jetons : char *tok = strtok(buf, ",");

Étape 11

Convertissez le jeton en type approprié. Exemple : row.col1 = atoi(tok);

Étape 12

Pour les jetons suivants, passez NULL à strtok : tok = strtok(NULL, ",");. Convertissez chaque champ. Exemple complet pour une ligne :

char *tok = strtok(buf, ",");
row.col1 = atoi(tok);
tok = strtok(NULL, ",");
row.col2 = tok;
tok = strtok(NULL, ",");
row.col3 = atof(tok);

Étape 13

Répétez pour tous les champs de la ligne. strtok retourne NULL quand la ligne est finie.

Astuce : Encapsulez la conversion dans une fonction séparée pour la lisibilité. fgets retourne NULL en fin de fichier → utilisez une boucle while pour parcourir tout le fichier.
Avertissement : fopen peut retourner NULL en cas d'erreur — vérifiez avant utilisation. Les jetons peuvent ne pas avoir le format attendu. Vérifiez les données avant conversion (chaîne vide, NULL, etc.).
Vie connectée