Bonjour,
J'ai un souci avec la lecture de structure variable en langage c.
Je m'explique, je dois lire un fichier .xxxx, pour cela je dois lire les structures du header d'abord. Ceci se fait tres facilement en C à l'aide de typedef struct puis fread(&struct_blabla,sizeof(struct_blabla),1,file);
Mais pour lire ce fichier .xxxx je dois lire apres les structures header une structure de taille variable c'est a dire qui contient un nombre de caractere aleatoire (commentaires qui varient d'un fichier .xxxx à l'autre). Et je ne vois pas encore comment faire pour le faire en C. Je ne connais pas le nombre de caractères de commentaires mais je sais que la prochaine variable de cette structure doit avoir une certaine valeur.
J'ai déjà écrit cette structure en Matlab (j'ai deja fait la fonction sur Matlab pour lire les .xxxx donc je sais que ca fonctionne correctement), si ça peut vous aider à comprendre ce que je cherche à faire.
Code Matlab : 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 function [BlockSize,Type2]= get_TaggedBlocks(open,OffSetup,Length,OffImageOffsets) if (hex2dec(OffSetup)+Length)<hex2dec(OffImageOffsets) A=fread(open,1,'uint16'); B=[A]; cmpt=2; while A~=1002 A=fread(open,1,'uint16'); B=[B,A]; cmpt=cmpt+2; end % BlockSize BlockSize=B((cmpt-4)/2) % Type Type2=dec2hex(A) % Reserved Reserved=fread(open,1,'uint16') C=BlockSize-8; if BlockSize<8 C=1; end % Data Data(1:C)=fread(open,C,'uint8'); end end
J'ai déjà cherché du côté de la lecture ligne par ligne et des listes chainées mais sans succès pour l'instant.
Si vous aviez une idée ça m'aiderait beaucoup. Merci d'avance. Cordialement.
Partager