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

  FORUM HardWare.fr
  Programmation
  C

  type d'acces dans un fichier binaire en C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

type d'acces dans un fichier binaire en C

n°1743642
TSniper
Posté le 09-06-2008 à 19:23:25  profilanswer
 

:hello:  
Je voulais savoir si on peut lire et écrire en meme temps dans un fichier bianaire? et dans un fichier texte? si oui Comment ?
 
Merci d'avance.
 :jap:

mood
Publicité
Posté le 09-06-2008 à 19:23:25  profilanswer
 

n°1743674
Gf4x3443
Killing perfection
Posté le 09-06-2008 à 19:58:13  profilanswer
 

- oui
- oui
- en ouvrant le fichier en mode rw:

 
Code :
  1. open("/tmp/test", O_RDWR | O_CREAT, S_IRUSR | S_IWUSR ...)
 

puis tu lis/écris dedans. A toi de gérer la position du pointeur (avec lseek(2), par exemple).


Message édité par Gf4x3443 le 09-06-2008 à 19:59:13
n°1743693
TSniper
Posté le 09-06-2008 à 20:13:06  profilanswer
 

Merci beaucoup mon ami
et esqu'on peut supprimer physiquement dans un fichier

n°1743717
TSniper
Posté le 09-06-2008 à 20:26:25  profilanswer
 

:(  
Est ce que la suppression physique dans un fichier existe sinon pourquoi???
merci d'avance les amis :jap:

n°1743823
Gf4x3443
Killing perfection
Posté le 09-06-2008 à 22:11:33  profilanswer
 

TSniper a écrit :

et esqu'on peut supprimer physiquement dans un fichier


 
Pas compris là
 
Mettre les caractères à null partout?

n°1743824
TSniper
Posté le 09-06-2008 à 22:22:48  profilanswer
 

on peut supprimer physiquement dans un fichier "texte ou binaire" ou non? Pourquoi?? et qu'est ce qu'on peut faire si on veut supprimer dans un fichier sans utiliser un autre fichier "un fichier d'échange"

n°1743828
dap++
Script kiddie
Posté le 09-06-2008 à 22:34:01  profilanswer
 

On ne peut pas lire/écrire directement dans un fichier, il faut appeler une fonction de positionnement (fseek, fsetpos, rewind) entre les deux. Si c'est une écriture suivie d'une lecture fflush() peut aussi faire l'affaire.


---------------
dap.developpez.com
n°1743829
Gf4x3443
Killing perfection
Posté le 09-06-2008 à 22:37:55  profilanswer
 

Qu'est ce que tu entends par "supprimer"? Ecraser une partie de son contenu? Utiliser O_TRUNC?

 

Si c'est effacer son contenu, remplis la partie en question de char '\0'.

 

Si c'est le tronquer, tu écrases le contenu avec un memmove() (ou memcpy si tu sais _vraiment_ ce que tu fais ici). Puis ftruncate(2).

 
dap++ a écrit :

On ne peut pas lire/écrire directement dans un fichier, il faut appeler une fonction de positionnement (fseek, fsetpos, rewind) entre les deux. Si c'est une écriture suivie d'une lecture fflush() peut aussi faire l'affaire.

 

Ca, ca n'est que dans le cas ou il utiliserait des flux de stdio. S'il n'utilise que des appels systèmes read(2), write(2), ca ne posera pas de problème, à part gérer le pointeur pour savoir ou il en est dans le fichier.

Message cité 1 fois
Message édité par Gf4x3443 le 09-06-2008 à 22:44:47
n°1743904
Taz
bisounours-codeur
Posté le 10-06-2008 à 01:01:08  profilanswer
 

mais fopen bon sang ! aucun intérêt open ici.

n°1743905
TSniper
Posté le 10-06-2008 à 01:02:09  profilanswer
 

Merci les amis mais quand on fait supprimer par '/0' c'est de la suppression logique et moi je veut savoir si la suppression physique* est possible??
 
*physique: effacer le contenu une fois pour toute  
 
avant
 
sonda
marc
pierre
marie
 
apres
 
sonda
pierre
 
c'est ça la suppression physique.

mood
Publicité
Posté le 10-06-2008 à 01:02:09  profilanswer
 

n°1743909
Gf4x3443
Killing perfection
Posté le 10-06-2008 à 01:10:14  profilanswer
 

Taz a écrit :

mais fopen bon sang ! aucun intérêt open ici.

 

A part s'emmerder à jouer avec fileno pour appeler truncate/ftruncate, se prendre les pieds dans les buffers stdio pour gérer lecture et écriture simultanées (surtout avec memcpy/memmove), effectivement, open n'a strictement aucun intéret. Surtout quand on veut devenir malin et utiliser mmap pour des copies/déplacements.

 

Edit: D'ailleurs, on se demande ce que fait fopen justement, à part allouer un stream pour jouer et faire un open(2).

Message cité 1 fois
Message édité par Gf4x3443 le 10-06-2008 à 01:11:41
n°1743910
Gf4x3443
Killing perfection
Posté le 10-06-2008 à 01:12:55  profilanswer
 

TSniper a écrit :

Merci les amis mais quand on fait supprimer par '/0' c'est de la suppression logique et moi je veut savoir si la suppression physique* est possible??
 
*physique: effacer le contenu une fois pour toute  


 
Il faut juste savoir lire un peu:
 

Gf4x3443 a écrit :

Si c'est le tronquer, tu écrases le contenu avec un memmove() (ou memcpy si tu sais _vraiment_ ce que tu fais ici). Puis ftruncate(2).


 
En mappant le fichier avec mmap(2).

n°1743933
Joel F
Real men use unique_ptr
Posté le 10-06-2008 à 08:12:59  profilanswer
 

Gf4x3443 a écrit :

D'ailleurs, on se demande ce que fait fopen justement, à part allouer un stream pour jouer et faire un open(2).


 
De tête c'est implementation dépendant, mais en général oui c'ets allocation d'un stream + open.

n°1744161
Taz
bisounours-codeur
Posté le 10-06-2008 à 12:54:38  profilanswer
 

Joel F a écrit :


 
De tête c'est implementation dépendant, mais en général oui c'ets allocation d'un stream + open.


ça bufferise est c'est un peu énorme niveau.


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

  type d'acces dans un fichier binaire en C

 

Sujets relatifs
[C] Probleme types de variables - DebutantParser un fichier XML
Problème programmation C++[Excel VBA]_Importer un fichier texte
[C#.NET] Surcharger l'operateur " ++ " pour une hashtable, comment ?Afficher du XML dans un fichier texte
[BAC 2008] Acces possible de faire ca ?!? Je passe Demain :sTraitement d'image en C++
[ASP] Probleme d'acès à un fichier sur "https" msxml3.dll error '800c0Accés externe Mysql avec base et vista
Plus de sujets relatifs à : type d'acces dans un fichier binaire en C


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