Tom's Guide > Forum > Programmation > Résolu : C : Comment lire un fichier bit par bit

Résolu : C : Comment lire un fichier bit par bit

Forum Programmation : Résolu : C : Comment lire un fichier bit par bit

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour,

J'aimerais savoir comment faire pour lire un fichier bit par bit et aussi écrire dans celui-ci bit par bit en C ?

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Salut Firelink !

Citation :

J'aimerais savoir comment faire pour lire un fichier bit par bit et aussi écrire dans celui-ci bit par bit en C ?



Simple, il te faut un désassembleur.

Je n'y connais rien d'autre... lol

Tchooooo :-P :-P :-P

Répondre à DiliBouille

Tiens voila :

Code :
  1. int lectureFichier(char *nomFichier){
  2.         ifstream fichier (nomFichier);
  3.         if (!fichier){
  4.                 cout << "Erreur : impossible d'ouvrir le fichier en lecture..." << endl;
  5.                 return -1;
  6.         }
  7.         while( ! fichier.eof() ){
  8.             fichier >> nbre;
  9.         }
  10.         fichier.close();
  11.         return 1;
  12. }



Ecrit avec le ofstream !

Répondre à MouT59

Scuze jvien de relire ton message le code d'avant ne fonctionnera qu'en C++

Voici une solution en C :

Code :
  1. void lecture(int *tube, char *nomFichier){
  2.   //Descripteur de fichier
  3.   FILE *fichier;
  4.   //Chaine de caractere lue
  5.   char mot[256];
  6.   fichier = fopen(nomFichier,"r" );
  7.   if (fichier == NULL){
  8.     printf("Erreur de fichier" );
  9.     exit(1);
  10.   }
  11.   while (fscanf(fichier,"%s",mot) != EOF){
  12.     printf("%s", mot);
  13.   }
  14.   fclose(fichier);
  15. }

Répondre à MouT59

Citation :


Salut Firelink !

Citation:
J'aimerais savoir comment faire pour lire un fichier bit par bit et aussi écrire dans celui-ci bit par bit en C ?

Simple, il te faut un désassembleur.

Je n'y connais rien d'autre... lol

Tchooooo



Salut Dilibouille,

J'aimerais le nom d'une focntion qui soit capable de lire un fichier bit par bit, pas un programme ! ;-)

Citation :


MouT59 a écrit :
Scuze jvien de relire ton message le code d'avant ne fonctionnera qu'en C++

Voici une solution en C :

Code :
  1. void lecture(int *tube, char *nomFichier){
  2.   //Descripteur de fichier
  3.   FILE *fichier;
  4.   //Chaine de caractere lue
  5.   char mot[256];
  6.   fichier = fopen(nomFichier,"r" );
  7.   if (fichier == NULL){
  8.     printf("Erreur de fichier" );
  9.     exit(1);
  10.   }
  11.   while (fscanf(fichier,"%s",mot) != EOF){
  12.     printf("%s", mot);
  13.   }
  14.   fclose(fichier);
  15. }





Salut MouT59,
Ton code lit un fichier mot par mot et non bit par bit ;-)

Répondre à Ale Guire

Et ben il te suffit de transcrire le mot en bit !

Répondre à MouT59

Il faut lire octet par octet avec par exemple des fread().
Ensuite sur chaque octet, tu peut aisément lire la suite des 8 bits en utilisant des masques binaires.

Répondre à CRicky

Houla ! Je suis un débutant moi ! :-D

Alors je lis octet par octet avec fread(), comment j'utilise cette fonction ?

Citation :

Ensuite sur chaque octet, tu peut aisément lire la suite des 8 bits en utilisant des masques binaires.



Masques binaires ?!
Tu peux m'expliquer ? :-D

Répondre à Ale Guire

creuse du coté de la fonction

fgetc();

cette fonction prend en paramètre un fichier ou flux, et renvoi un caractère
la premiere fois qu'elle est apelé elle revoi le 1er caractère, la deuxième fois elle revoit le deuxième, ect...,

enfin c'est a creuser

Répondre à yann_p

Ouais mais après comment je fais pour décomposer en octet et appliquer des masques binaires ?

Répondre à Ale Guire

je numérote les bits en partant de la gauche en commançant à 0 (7,6,5,4,3,2,1 et 0)

La liste de masques:
00000001b = 0x01 = 1
00000010b = 0x02 = 2
00000100b = 0x04 = 4
00001000b = 0x08 = 8
00010000b = 0x10 = 16
00100000b = 0x20 = 32
01000000b = 0x40 = 64
10000000b = 0x80 = 128

donc si tu veux savoir si le premier bit est à 0 ou 1, tu fais un ET binaire (dont le résultat est, qu'un bit est mis à 1, si le bit du nombre ET le bit du masque sont à 1)

donc il suffit de tester:

Code :
  1. if (nombre & 0x01 == 0x01)
  2.   puts("bit 0 mis à 1" );
  3. else
  4.   puts("bit 0 mis à 0" );
  5. if (nombre & 0x02 == 0x02)
  6.   puts("bit 1 mis à 1" );
  7. else
  8.   puts("bit 1 mis à 0" );
  9. if (nombre & 0x04 == 0x04)
  10.   puts("bit 2 mis à 1" );
  11. else
  12.   puts("bit 2 mis à 0" );
  13. if (nombre & 0x08 == 0x08)
  14.   puts("bit 3 mis à 1" );
  15. else
  16.   puts("bit 3 mis à 0" );
  17. if (nombre & 0x10 == 0x10)
  18.   puts("bit 4 mis à 1" );
  19. else
  20.   puts("bit 4 mis à 0" );
  21. if (nombre & 0x20 == 0x20)
  22.   puts("bit 5 mis à 1" );
  23. else
  24.   puts("bit 5 mis à 0" );
  25. if (nombre & 0x40 == 0x40)
  26.   puts("bit 6 mis à 1" );
  27. else
  28.   puts("bit 6 mis à 0" );
  29. if (nombre & 0x80 == 0x80)
  30.   puts("bit 7 mis à 1" );
  31. else
  32.   puts("bit 7 mis à 0" );

Répondre à CRicky

Je crois que je vais attendre avant de me lancer dans les bit, c'est trop difficile à comprendre !

J'ai testé le code que tu m'as donné, et quelque soit la valeur de nombre (long), tous les bits valent 1...

Merci de votre aide !

Bye

Répondre à Ale Guire

C'est sur faut pas précipité les choses c'est en apprenant qu'on apprend lol ! ;)

Répondre à MouT59
Tom's Guide > Forum > Programmation > Résolu : C : Comment lire un fichier bit par bit
Aller à :

Il y a 2104 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens