Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1125 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C] récupérer un entier sur 2 octets dans un fichier [résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] récupérer un entier sur 2 octets dans un fichier [résolu]

n°358625
KSauzeRK
Posté le 11-04-2003 à 11:52:28  profilanswer
 

Bonjour,
 
Je dois récupérer un nombre codé sur 2 octets dans un fichier, et je ne comprends pas pourquoi le code suivant ne fonctionne pas :  
 

Code :
  1. int   d_tmp = 0;
  2.     fread(&d_tmp + 2, 1, LN_LONGUEUR, f_ebcdic);

 
 
LN_LONGUEUR vaut 2.
 
Vu qu'un int = 4 octets, et que le nombre est codé sur 2 octets seulement, je pensais lui passer l'addresse de l'entier + 2 octets. Bon ca me semblait bien crade (quoique?), mais j'aurais voulu comprendre pourquoi ca ne marchait pas (d_tmp vaut 0). Là pour l'instant je fais :  
 

Code :
  1. int    d_tmp, d_ln_data;
  2.     d_tmp = d_ln_data = 0;
  3.     fread(&d_tmp, 1, LN_LONGUEUR, f_ebcdic);
  4.     d_ln_data = d_tmp >> LN_LONGUEUR * 8;


 
et ca marche, donc le nombre est bien récupéré.
 
Merci d'avance


Message édité par KSauzeRK le 11-04-2003 à 12:14:01
mood
Publicité
Posté le 11-04-2003 à 11:52:28  profilanswer
 

n°358634
polo021
Posté le 11-04-2003 à 11:58:47  profilanswer
 

ben si tu lis un short int il va lire seulement deux octets non?
short int data;
 
fread(&data, sizeof(short int),1,ptr_file)
je sais pas je dis ca comme ca mais c'est a essayer


Message édité par polo021 le 11-04-2003 à 12:01:50
n°358638
chrisbk
-
Posté le 11-04-2003 à 12:01:11  profilanswer
 

Citation :

Vu qu'un int = 4 octets, et que le nombre est codé sur 2 octets seulement, je pensais lui passer l'addresse de l'entier + 2 octets


 
deja je parierais pas la dessus
ensuite :
 
int tadaga;
int * r = &tadaga + 2;
 
tu n'a pas avance de deux octets comme tu le crois, mais de 8 (bah ouais, 2 * 4 :D)
 
si tu veux lire un short, utilise un short et converti ensuite en entier

n°358658
KSauzeRK
Posté le 11-04-2003 à 12:13:19  profilanswer
 

Honte à moi jusqu'à la fin des temps car :
 
- j'avais oublié l'existence du type short (si si), c'est pour ca que je m'emmerdais avec un int  
 
- j'avais oublié que le + 2 était pas égal a + 2 octets, mais était fonction du type...c'est con il m'aurait segfaulté, ca m'aurait peut-être rafraichi la mémoire...
 
Merci à vous en tout cas.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C] récupérer un entier sur 2 octets dans un fichier [résolu]

 

Sujets relatifs
[PHP]Récuperer le résultat d'un SUM en PHP ?trouver le type de fichier avant l'envoi d'un upload
Comment copier un fichier indefiniment sur une même partition ?[PHP] Retrieve de data par formulaire (resolu)
[php ou perl] petite bd dans 1 fichierACCESS requete pour recuperer une sorte d'"intevalle"
ecriture reecriture fichier en mode binaireRécuperer un HWND d'un HINSTANCE ?
chemin vers perl automatique pour fichier exécutableOuverture d'un fichier Excel en Java ?
Plus de sujets relatifs à : [C] récupérer un entier sur 2 octets dans un fichier [résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR