Bonjour à tous,

je sollicite votre aide afin de m'aider dans une amélioration de mon programme.

Ce programme récupère en fait une liste de données dans un fichier texte.

J'ai donc créé une structure dont le type est appelé trace. Elle contient un titre (comment) un nombre de points affiché, et deux colonnes de valeurs.

Le fichier marche très bien, je peux le lire et l'afficher dans une console.



Ce que j'aimerai pour l'améliorer c'est de créer une structure de ce type:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
typedef struct{
char comment[40];
int nbpts;
float *time;
float *value;
} trace;
et par le fait utiliser des allocations dynamiques. mais je n'ai pas très bien saisi la subtilité.

Si vous pouviez m'aider dans les démarches se serait cool

Je vous ai joins le code que j'ai créé auparavant.

merci d'avance.

Skanino


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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include<stdio.h>
#include<stdlib.h>
#define POINTS 4096
 
typedef struct{
char comment[40];
int nbpts;
float time[POINTS];
float value[POINTS];
} trace;
 
void readTrace(char* fichier,trace* uneTrace);
void printTrace(trace* uneTrace);
 
void main()
{
	trace uneTrace;										/*on défini le type trace pour la variable uneTrace*/
	int t=0;/*
	FILE* pf;
	pf=fopen("cell2.txt","r");*/
	readTrace("cell2.txt",&uneTrace);					/*appel de la fonction en envoyant le fichier txt et l'adresse de la variable*/
	printf("Tester la fonction print tape 1\n\t");
	scanf("%d",&t);
 
	if (t==1)
		printTrace(&uneTrace);
	else
		printf("\ntu veux rien faire\n");
 
}
 
void readTrace(char* fichier,trace* uneTrace)
{
	int i=0;											
	FILE* pf;
	pf=fopen(fichier,"r");								/*ouverture du fichier envoyé par la fonction dans le main, ici cell2.tx*/
 
	if(pf!=NULL)										/*si le fichier est bien lu on applique la lecture*/
	{
		fscanf(pf,"%s",uneTrace->comment);				/*lecture du titre*/
		fscanf(pf,"%d",&(uneTrace->nbpts));				/*nombre d'éléments*/
 
		for(i=0;i<(uneTrace->nbpts);i++)
		{
			fscanf(pf,"%f",&(uneTrace->time[i]));		/*valeure num1 du tableau*/
			fscanf(pf,"%f",&(uneTrace->value[i]));		/*valeure num2 du tableau*/
		}
		printf("c ok\n\n");
	}
	else
		printf("c pas ok");
 
	fclose(pf);
}
 
void printTrace(trace* uneTrace)						/*avec cette fonction on va pouvoir afficher les valeures lues*/
{
	int i=0;
		printf("%s\n",uneTrace->comment);
		printf("\t%d\n",uneTrace->nbpts);
 
		for(i=0;i</*(uneTrace->nbpts)*/15;i++)         /*on affiche que les premiers éléments pour l'instant*/
		{
			printf("t=%.1f\t",uneTrace->time[i]);
			printf("v=%.3f\n",uneTrace->value[i]);
		}
}