1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| #include <stdio.h>
#include <stdlib.h>
// Exemple de lecture de fichier
// L'appel du programme en console se fait comme suit :
// <nom_programme> <nom_fichier>
// ce programme considère que notre fichier contient des lignes composées de :
// Entier,Chaine,Réel,Entier
// le séparateur est une virgule, voir exemple.txt fourni avec ce programme
int main(int argc, char* argv[])
{
if (argc < 2)
{
printf("L'argument doit être un nom de fichier.");
return -1;
}
// récupération du nom de fichier passé en
// argument de la commande du programme
char const* const fileName = argv[1];
// Ouverture du flux de fichier
FILE* file = fopen(fileName, "r");
// Vérification de la bonne ouverture du fichier
if(!file)
{
printf("L'argument doit être un nom de fichier.");
return -2;
}
char line[256]; // contiendra la chaine de caractères d'une ligne
char *substr; // contiendra la chaine de caractères extraite de la ligne
int nblines = 0; // on va compter le nombre de ligne avec cette variable
while (fgets(line, sizeof(line), file)) {
// affichage de la ligne lue
printf("%s", line);
// la fonction strtok découpe la chaine « line » en utilisant le
// séparateur virgule ","
// elle retourne la première chaine découpée
substr = (char*) strtok (line, ",");
// compteur de découpe : i ira de 1 à 4 car il y a 4 valeurs par ligne
int i = 0;
// on parcourt le valeur de la ligne
while(substr != NULL)
{
i++;
if (i==1) // la première valeur est un entier
printf("type = %d\n", atoi(substr));
else if (i==2) // la 2nde valeur est une chaine
printf("type = %s\n", substr);
else if (i==3) // la 3ème valeur est un Réel
printf("type = %f\n", atof(substr));
else if (i==4) // la 4ème valeur est un entier
{
printf("type = %d\n", atoi(substr));
i = 0;
}
// lorsque la fonction strtok est appelée avec NULL
// elle retourne les découpes suivantes de la même legne
substr = (char*)strtok (NULL, ",");
}
nblines++;
} |
Partager