J'ai commené ça avec une petite aide sur le net :
#include <stdio.h>
/* retourne le nombre de lignes d'un fichier texte deja ouvert */
int get_nb_lines(FILE* fp)
{
unsigned int nb = 0;
while (fgets(fp) != NULL) {
nb++;
}
return nb;
}
/* recupere les valeurs dans v1 et v2 (passage par reference) */
void get_values(char* ligne, float *v1, float *v2)
{
char* tmp:
char* result;
/* strtok modifie son premier argument,
on travaille donc sur une variable temporaire */
strcpy(tmp, ligne);
result = strtok(tmp, "\t, " );
if(result != NULL) {
sscanf(result, "%f", v1);
result = strtok(NULL, "\t " );
if(result != NULL) {
sscanf(result, "%f", v2);
}
}
}
int main(int argc, char* argv[])
{
FILE* fp = NULL;
unsigned int nb_lines = 0;
float *value1 = NULL,
*value2 = NULL;
int i = 0;
char line[256] = "";
fp = fopen("test.dat", "r" );
if (fp == NULL) return -1;
nb_lines = get_nb_lines(fp);
value1 = malloc(nb_lines * sizeof *value1);
value2 = malloc(nb_lines * sizeof *value2);
while((fgets(ligne, 256, fp) != NULL)
&& (i<nb_lines)) {
get_values(ligne, &(value1[i]), &(value2[i]));
i++;
}
/* et bien sur on libere la memoire */
free(value1);
value1 = NULL;
free(value2);
value2 = NULL;
fclose(fp);
fp = NULL;
return 0;
}
Qu'est-ce que vous en pensez ?