Se connecter avec
S'enregistrer | Connectez-vous

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

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte

Tiens voila :

  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.  
  8. while( ! fichier.eof() ){
  9. fichier >> nbre;
  10. }
  11. fichier.close();
  12.  
  13. return 1;
  14. }


Ecrit avec le ofstream !

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

Voici une solution en C :

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

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 :

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



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

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

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
Expert Programmation

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:
  1. if (nombre & 0x01 == 0x01)
  2. puts("bit 0 mis à 1");
  3. else
  4. puts("bit 0 mis à 0");
  5.  
  6. if (nombre & 0x02 == 0x02)
  7. puts("bit 1 mis à 1");
  8. else
  9. puts("bit 1 mis à 0");
  10.  
  11. if (nombre & 0x04 == 0x04)
  12. puts("bit 2 mis à 1");
  13. else
  14. puts("bit 2 mis à 0");
  15.  
  16. if (nombre & 0x08 == 0x08)
  17. puts("bit 3 mis à 1");
  18. else
  19. puts("bit 3 mis à 0");
  20.  
  21. if (nombre & 0x10 == 0x10)
  22. puts("bit 4 mis à 1");
  23. else
  24. puts("bit 4 mis à 0");
  25.  
  26. if (nombre & 0x20 == 0x20)
  27. puts("bit 5 mis à 1");
  28. else
  29. puts("bit 5 mis à 0");
  30.  
  31. if (nombre & 0x40 == 0x40)
  32. puts("bit 6 mis à 1");
  33. else
  34. puts("bit 6 mis à 0");
  35.  
  36. if (nombre & 0x80 == 0x80)
  37. puts("bit 7 mis à 1");
  38. else
  39. puts("bit 7 mis à 0");
Lassé par la pub ? Créez un compte
Tom's guide dans le monde