Bonjour,
Dans le cadre d'un cours, je dois lire un fichier texte contenant des données placées ainsi :
X
A0 B0
A1 B1
A2 B2
A3 B3
... ...
où X est une donnée isolée.
Mon but est de récupérer ces données, et de les stocker dans des tableaux (pour A et B) et dans un double pour X.
Pour le moment, j'ai uniquement traité le cas où X n'existait pas, c'est-à-dire qu'à la première ligne se trouvaient directement A0 et B0.
Ce code se construit ainsi :
Le voici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Lecture du fichier texte avec fgets et une boucle while pour connaître le nombre de lignes, et donc pour allouer dynamiquement la place pour mes 2 tableaux Puis relecture avec une boucle for pour stocker les données dans ces tableaux
Maintenant pour prendre en compte la donnée isolée "X" je pensais faire ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #include <stdlib.h> #include <stdio.h> #include <string.h> #include <math.h> #define MAXLINESIZE 128 int main( int argc, char *argv[] ) { FILE * FE = NULL; //pointeur du fichier d'entrée char linebuff[MAXLINESIZE] ; int nb = 0 ; //nombre d'échantillons du signal (ou nombre de lignes du fichier d'entrée-1 (la première)) double *A ; //vecteur A double *B ; //vecteur B int i = 0 ; //variable de boucle FE = fopen("/home/entree.txt" , "r") ; if ( FE != NULL ) { printf( "Le fichier d'entrée est correct.\n" ) ; //Première boucle pour récupérer le nombre de ligne du FE while( fgets ( linebuff, MAXLINESIZE, FE ) != NULL ) { nb++; } printf( "Le signal contient %i éléments.\n", nb ) ; rewind( FE ); //Allocation de l'espace mémoire pour les 2 tableaux A = malloc (nb * sizeof ( double ) ) ; B = malloc (nb * sizeof ( double ) ) ; //Seconde boucle pour sauvegarder les données du fichier dans les tableaux for ( i = 0 ; i < nb ; i++ ) { fscanf( FE, "%lf %lf", &A[i], &B[i] ); } } fclose ( FE ) ;
Le problème c'est que je ne sais pas trop comment écrire les 2 premières étapes citées précédemment, je me mélange un peu les pinceaux entre pointeurs et données ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Lecture du fichier d entrée, avec une boucle et un compteur (quelque chose du style while ... != \n ), pour connaître le nombre de caractères contenus à la première ligne et stocker la donnée X. Avec fseek, je place le curseur virtuel de lecture à la valeur du compteur+1 (donc à la 2eme ligne ?) Je colle mon code précédent en réajustant, à la place du rewind je fais un fseek
Pourriez-vous m'aider je vous prie ?
Un grand merci d'avance !!
Apeth
Partager