Lecture d'un fichier de données en C

cs_sandy27 Messages postés 20 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 6 août 2008 - 24 nov. 2005 à 19:23
cs_sandy27 Messages postés 20 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 6 août 2008 - 8 déc. 2005 à 18:40
Alors je vais poser une question qui a déjà été posée dans le forum, mais les réponses ne me conviennent pas ! je veux lire un fichier qui contient des séries de valeurs en colonne, avec chaque ligne correspondant à un instant (la 1ere colonne c'est le temps, les autres colonnes sont les données que je veux récupérer). Apparament il faut utiliser la fonction fgets qui va lire chaque ligne, et après il faut identifier dans chaque ligne la tabulation qui sépare chaque donnée. Mais je ne sais pas faire cette dernière chose, et c'est pas un peu lourd ça quand on a 40 colonnes ?? et pourquoi je pourrais pas utiliser fscanf ?? bref, j'y arrive pas du tout !!

7 réponses

yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
24 nov. 2005 à 20:02
Au cas où tu ne le saurais pas, le caractère pour la tabulation est : "\t".

Ca t'aidera sûrement pour continuer.


YOYO, @+.
YOYO
0
cs_sandy27 Messages postés 20 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 6 août 2008
25 nov. 2005 à 18:03
en effet je ne savais pas, merci !


sinon j'ai essayé de lire mon fichier avec fscanf, mais il y a 41 colonnes à lire et je ne sais pas manipuler les formats: est qu'il faut répéter 41 fois "%f% avant de citer les noms de variables ou est-ce qu'on peut écrire "41%f" ??


j'ai aussi voulu essayer de lire le fichier ligne par ligne avec fgets, mais fgets lit la ligne en tant que chaine de caractère. Il faut ensuite détecter 40 tabultations qui délimitent mes données.... je n'arrive pas à le faire !! sans compter qu'il faut après convertir en flottant...

HELP !!!!!! m'en sors pas moi....
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
25 nov. 2005 à 18:11
A mon avis le mieux c'est d'utiliser fgets et d'ensuite détecter les tabulations.
Avec la chaine de caractères que fgets te retourne, tu fais :

while(*Chaine =! '\0')
{
if (*Chaine == '\t') // si c'est une tabulation faire qq chose
Chaine++;
}

je suis pas tout à fait sûr que ce code passe mais ça te donne au moins une idée.

YOYO, @+.
YOYO
0
cs_sandy27 Messages postés 20 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 6 août 2008
25 nov. 2005 à 18:15
ok merci ! je vais essayer ça.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
25 nov. 2005 à 18:32
Tiens-moi au courant.
Bon courage.

YOYO, @+.
YOYO
0
shadow1779 Messages postés 706 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2013
26 nov. 2005 à 18:13
sinon vois du coté de l'API



OpenFile, ReadFile, et WriteFile



http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/file_management_functions.asp
.
0
cs_sandy27 Messages postés 20 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 6 août 2008
8 déc. 2005 à 18:40
voilà ce que j'ai fait finalement:

#define TAILLEBUFFER 1024
#define ZERO_FIN 1
char Var[TAILLEBUFFER + ZERO_FIN];
double Inputs_data[TAILLEBUFFER];

while (fgets(Text, TAILLEBUFFER, Inputs_file)) /*lecture ligne par ligne*/
{
i=0; j=0; k=1;


while (i <= strlen(Text))
{
while (Text[i] != '\t') i++; /* je détecte la tabulation qui sépare mes données */
strncpy (Var, Text + j , i);
Inputs_data[k] = strtod(Var, NULL); /* je convertis en nombre que je stocke dans un tableau */
j = i;
i++;
k++;
}
}

je sais pas si c'est la meilleure solution, mais au moins c'est générique, je peux autant de ligne et de colonnes que je veux...
0
Rejoignez-nous