Conversion C vers PB *char

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Conversion C vers PB *char

Message 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.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Conversion C vers PB *char

Message 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 ?
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: Conversion C vers PB *char

Message 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.
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Répondre