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

  FORUM HardWare.fr
  Programmation
  C++

  Petite question à propos de l'accès en mode binaire des fichiers...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Petite question à propos de l'accès en mode binaire des fichiers...

n°813708
Jesus Army
Allez voir là bas si j'y suis
Posté le 03-08-2004 à 15:01:55  profilanswer
 

:hello:
 
Je me pose une question là, parceque soit il y a un truc qui cloche, soit je me suis inventé des choses pendant que je dormais... :ange:
 
Alors pour reprendre un exemple de msdn (qui contient des erreurs :/) et qui est trouvable ici, voici ma question :
 
Si j'ouvre un fichier en mode binaire, comme ceci par exemple :

Code :
  1. ofstream ofs( "test.dat", ios::binary );


Et qu'ensuite toujours en suivant les exemple de msdn je copie deux ptit caractères dedans comme ceci :

Code :
  1. char cArray[2] = {'a', 'b'};
  2. ofs.write( ( char* ) cArray, 4 ); // Exactly 4 bytes written


Je ne devrais pas obtenir un fichier "test.dat" avec les deux caractères "ab" dedans codés en binaire et donc illisibles depuis notepad par exemple ? :??:
 
Parceque que je mette le "binary" ou pas ca ne change absolument rien et je me retrouve avec les caractères dans le fichier comme dans un banal fichier texte... [:spamafote]
 
Donc je delire ou il y a un problème ?
 
Mercÿte :jap:

mood
Publicité
Posté le 03-08-2004 à 15:01:55  profilanswer
 

n°813712
masklinn
í dag viðrar vel til loftárása
Posté le 03-08-2004 à 15:05:50  profilanswer
 

ben en binary tu colles le code des caractères A et B, donc quand tu ouvres dans notepad il lit tous les octets comme des caractères et retrouve A et B, c'est parfaitement normal :)


Message édité par masklinn le 03-08-2004 à 15:06:58

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°813743
Jesus Army
Allez voir là bas si j'y suis
Posté le 03-08-2004 à 15:16:26  profilanswer
 

Ah vi oky, c'est vrai que vu comme ca c'est logique...
 
Mais il me semblait qu'en ecrivant en mode binaire avec un fwrite en C par exemple (ou une autre méthode me rappelle plus :ange:) on aboutissait à un fichier illisible à l'aide de notepad ? Ou alors il faut un éditeur hexa ou un truc dans le genre... Mais c'est des souvenirs tout ca et pitètre que je me les invente pour me faire inconsciement plaisir... :/ Ou alors on ne peut pas faire ca avec ofstream ? (Je reserve ma place à l'hsoto ? C'est Alzheimervous pensez ? :/ :'()

n°813759
masklinn
í dag viðrar vel til loftárása
Posté le 03-08-2004 à 15:23:17  profilanswer
 

ben tu aboutis a un truc illisible si tu n'écris pas des caractères :) (ou alors que tu écrit dans un code que notepad ne comprend pas)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°813760
Taz
bisounours-codeur
Posté le 03-08-2004 à 15:23:35  profilanswer
 

char cArray[2] = {'a', 'b'};
  ofs.write( ( char* ) cArray, 4 ); // Exactly 4 bytes written
 
 
cast inutile, et ça plante.   ofs.write(cArray, sizeof cArray)

n°813782
Jesus Army
Allez voir là bas si j'y suis
Posté le 03-08-2004 à 15:30:53  profilanswer
 

Masklinn a écrit :

ben tu aboutis a un truc illisible si tu n'écris pas des caractères :) (ou alors que tu écrit dans un code que notepad ne comprend pas)


Donc finalement si je veux que ca soit illisible c'est à moi meme de gerer ca et de transformer mes données à ecrie avant de remplir le fichier, il n'y a pas de méthode toute faite pour ca... :jap:
 

Taz a écrit :

char cArray[2] = {'a', 'b'};
  ofs.write( ( char* ) cArray, 4 ); // Exactly 4 bytes written
 
 
cast inutile, et ça plante.   ofs.write(cArray, sizeof cArray)


Effectivement le cast ne sert à rien, mais c'est parcequ'au debut j'avais un tableau d'entier, mais j'ai changé juste après et j'ai oublié de l'enlever. :ange: Et sinon vi le "4" est très moche, mais c'est du copié collé du code de msdn, et en plus il contient des erreurs comme le nom d'une variable éronné... :/
 
Et sinon si j'utilise la methode writeFile de l'API Win32 (de toute facon je ne compte pas porter le prog sur un autre OS alors après tout pourquoi pas... [:spamafote]) il va aussi m'ecrire ca de la meme facon ? (pas très clair non plus sur ce point msdn je trouve... :ange:)


Message édité par Jesus Army le 03-08-2004 à 15:31:37
n°813783
masklinn
í dag viðrar vel til loftárása
Posté le 03-08-2004 à 15:31:15  profilanswer
 

c'était pas la question taz ;)
(même si ta remarque est vraie et que les mecs de la MSDN codent comme des pieds)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°813808
Taz
bisounours-codeur
Posté le 03-08-2004 à 15:37:31  profilanswer
 

le problème c'est que dans l'exemple, sizeof cArray == 2 et pas 4

n°813820
Jesus Army
Allez voir là bas si j'y suis
Posté le 03-08-2004 à 15:41:05  profilanswer
 

Vivi beh ca c'est msdn, il doivent aimer mettre des espaces en plus... [:spamafote] :D
 
Parceque sinon mon problème est tout bete, c'est que je fais un ptit pendu et que j'aimerais que les mots à trouver ainsi que leurs indices et autres paramètres les concernant ne soit pas accessibles aussi facilement qu'avec notepad, parceque sinon c'est plutot facile... :ange: :ange: (quoi que vu qu'il devrait y avoir 2 bon milliers d'enigmes il va pitètre faire la tronche à l'ouverture notepad :D)


Message édité par Jesus Army le 03-08-2004 à 15:41:48
n°813821
masklinn
í dag viðrar vel til loftárása
Posté le 03-08-2004 à 15:41:42  profilanswer
 

effectivement il a oublié de convertir la taille en passant d'un int[] au char[]
 

Citation :

quoi que vu qu'il devrait y avoir 2 bon milliers d'enigmes il va pitètre faire la tronche à l'ouverture notepad


bof j'ouvre des .txt de 60Mo au notepad :)  
(c'est gros des logs mensuels de MMORPG)


Message édité par masklinn le 03-08-2004 à 15:43:03

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
mood
Publicité
Posté le 03-08-2004 à 15:41:42  profilanswer
 

n°813858
Jesus Army
Allez voir là bas si j'y suis
Posté le 03-08-2004 à 16:15:05  profilanswer
 

Roh le mechant notepad ! :o (Tu relis tous tes logs avant de t'endormir c'est ca ? :D)
 
C'est vrai qu'avant il penait dès que la taille du fichier se comptait en Mo mais maintenant il s'en sort plutot pas mal...
 
Sinon si je convertit mon tableau de char en tableau d'int et que j'enregistre comme ca et qu'à la lecture je fais l'inverse, ca fera ce que je demande mais n'est-ce pas une façon un peu trop bricolage limite pas belle toute horrible de le faire ? :/


Message édité par Jesus Army le 03-08-2004 à 16:15:35
n°813872
masklinn
í dag viðrar vel til loftárása
Posté le 03-08-2004 à 16:23:54  profilanswer
 

nana notepad il pète toujours pour ouvrir des fichiers texte de 60Mo :D
 
mais bon il y arrive si on lui laisse le temps


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°813875
Jesus Army
Allez voir là bas si j'y suis
Posté le 03-08-2004 à 16:29:14  profilanswer
 

faut être patient aussi... :/ [:tinostar]
 
Sinon le mechant notepad si j'enregistre ma chaine de caractère en ecrivant en mode binaire le code ascii de chaque lettre il me retrouve quand meme ce qui est ecrit mais avec 3 espaces entre chaque caractère... :o Bon je peux modifier le code ascii au passage vers un entier et l'inverse quand je lit mon fichier mais ca m'a pas l'air très eleguant comme methode... :/


Message édité par Jesus Army le 03-08-2004 à 16:29:27
n°813937
Jesus Army
Allez voir là bas si j'y suis
Posté le 03-08-2004 à 17:28:48  profilanswer
 

Et sinon, une petite autre question, (parceque j'etais en train de tester mais je me créé d'autres problèmes du coup par la meme occaz alors tant qu'à faire si ca ne sert à rien autant que je m'arrete là... :ange:) si je donne un pointeur vers une instance de classe à la methode write, elle va faire la tete non ?

n°813939
Kristoph
Posté le 03-08-2004 à 17:34:26  profilanswer
 

Jesus Army a écrit :

Et sinon, une petite autre question, (parceque j'etais en train de tester mais je me créé d'autres problèmes du coup par la meme occaz alors tant qu'à faire si ca ne sert à rien autant que je m'arrete là... :ange:) si je donne un pointeur vers une instance de classe à la methode write, elle va faire la tete non ?


 
Non, aucun problème tant que tu n'essaye pas d'écrire trop de données. Par contre, il ne faut pas ( vaut mieux pas ) essayer de lire le fichier obtenu et esperrer que ça marche :D

n°813945
Jesus Army
Allez voir là bas si j'y suis
Posté le 03-08-2004 à 17:37:59  profilanswer
 

ah vi donc dans ce cas l'interet est plutot limité alors... :ange: :D
 
Et avec une structure ca irait mieux ?


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

  Petite question à propos de l'accès en mode binaire des fichiers...

 

Sujets relatifs
[PHP] Accés dans un tableau d'objets...fin de processus lors d'acces fichier
juste une petite question pour quitter une pageVoici une colle (VB et fichiers PDF)
Les fichiers logPetite question sur les fichier a acces direct
[MySQL] Crypter les acces a une base de données 
Plus de sujets relatifs à : Petite question à propos de l'accès en mode binaire des fichiers...


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