Page 1 sur 1

Conversion C vers PB *char

Publié : jeu. 10/avr./2014 10:58
par Mesa
J'ai un doute sur ma traduction d'une petite partie d'un code plus grand :

Code : Tout sélectionner

struct { char/* **cval*/ *cval[400];
double *dval;
} HEADER;
char  *CVAL[401][3];
en

Code : Tout sélectionner

Structure  HEADER
  cval.s{400} 
  *dval
EndStructure;

Global HEADER.HEADER

Global CVAL.s{3}(401)
car, plus loin dans le code, j'ai un fichier déjà ouvert, et pointé par fp_bin:

Code : Tout sélectionner

for (I=1; I<=400 ; I++){
		fread  (CVAL[I] ,sizeof(char),6,fp_Bin);
		HEADER.cval[I]=CVAL[I];
		}
400 fois 6 caractères ne peuvent pas rentrer dans HEADER.cval[400] et en plus ça ne peut pas rentrer non plus dans char *CVAL[401][3].

Et pourtant le code entier compile sans erreur et l'exe fonctionne sans problème.

J'ai fait attention à la casse.

Une idée ?

M.

Re: Conversion C vers PB *char

Publié : jeu. 10/avr./2014 13:55
par djes
Moi j'aurais plutôt traduit comme ça (m'enfin, vu que je ne code plus beaucoup...)

Code : Tout sélectionner

;struct { char/* **cval*/ *cval[400];
;double *dval;
;} HEADER;
;char  *CVAL[401][3];

EnableExplicit

Structure HEADER
	*cval.char[400]
	*dval.double
EndStructure

Dim *CVAL.Character(401,3)
Il faut avouer que c'est bizarre. Déjà le codeur jongle avec les pointeurs et les longueurs (le 401 est suspect), après il lit 6 chars à la fois mais n'avance I que de 1... Le "for" n'est pas redéfini quelque part, ou peut-être le char ?

Re: Conversion C vers PB *char

Publié : jeu. 10/avr./2014 15:05
par Fig
Ils aiment pas se compliquer un peu la vie les programmeurs en C ?
C'est quoi le but ? Réussir à pommer le lecteur en essayant d'écrire le truc le plus crypt-abscon possible ?
A croire qu'ils oublient parfois que c'est traduit en assembleur, pour finir, langage à la syntaxe sans surprise, au moins.