Ecriture d'un entier "en dur"

Ecriture d'un entier "en dur" - C - Programmation

Marsh Posté le 27-10-2007 à 20:44:28    

Bonjour tout le monde ,
 
Je cherche à écrire un entier au début d'un fichier :
( dans le contexte , j'essaie d'effectuer un index pour chaque fichier )
 
Afin d'écrire un programme pour pouvoir lire cette index , il faut que je puisse écrire l'entier dans le fichier.
J'ai essayé de la facon suivante ( IND étant la valeur de l'index )

Citation :


f_wr = fopen(path,"w+" );
  fprintf(f_wr,"%4d",ind);
  setIndex(fd1,ind);
  fclose(f_wr);


 
Mais on se rend rapidement compte qu'il est ensuite difficile de récuperer le chiffre ,
exemple : ind = 12000
Bien qu'étant un entier , cette valeur représente 5 octets dans le fichier , je vais perdre le dernier 0...
Y aurait il une façon de coder la séquence de bits dans le fichier et de la convertir ensuite??
 
J'aimerais que quelqu'un éclaire ma lanterne :
Comment écrire tous mes entiers de la même façon , et ainsi pouvoir les récuperer ?
 
Merci d'avoir pris le temps de lire le message
 

Reply

Marsh Posté le 27-10-2007 à 20:44:28   

Reply

Marsh Posté le 27-10-2007 à 21:43:28    

Tu peux écrire ton entier en binaire au lieu de l'écrire en ascii. Ou alors débrouille toi pour écrire un nombre de charactères ascii suffisant pour couvrir tous les entiers (10 si tes entiers font 32 bits).

Reply

Marsh Posté le 28-10-2007 à 11:29:22    

Ccedille a écrit :

Je cherche à écrire un entier au début d'un fichier :


Texte, binaire, taille fixe ? Il faut être précis dans la spécification d'un problème, sinon, on a vite fait de faire n'importe quoi...
 
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 29-10-2007 à 03:08:42    

Emmanuel Delahaye a écrit :


Texte, binaire, taille fixe ? Il faut être précis dans la spécification d'un problème, sinon, on a vite fait de faire n'importe quoi...
 
 


 
L'idée serait de l'écrire en binaire , tout en étant capable de lire ce nombre binaire ensuite.

Reply

Marsh Posté le 29-10-2007 à 09:35:27    

Pour écrire :

Code :
  1. int ind = 12000;
  2. fwrite(&ind,  sizeof ind,  1,  fd1);


 
Pour lire :

Code :
  1. int ind;
  2. fread(&ind,  sizeof ind,  1,  fd1);


 
En supposant dans les deux cas que tu es au début de fd1. Tu tu n'es pas au début, place toi en début de fichier avec rewind().
 
Edit : et en supposant aussi que la portabilité (taille des int, endianness...) n'est pas un problème, c'est-à dire que tu lis et écrit le fichier sur des architectures qui utilisent les même int.


Message édité par matafan le 29-10-2007 à 09:37:54
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed