begin process at 2010 02 10 09:47:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

lecture fichier binaire


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

lecture fichier binaire

vendredi 21 avril 2006 à 15:47:03 | lecture fichier binaire

SesechXP

Salut !

Je cherche à lire des données dans un fichier binaire afin de les réafficher en ascii.

Voici la tête du fichier à lire

@1000
4A 75 6C 69 65 6E FF FF FF FF FF FF FF FF FF FF
31 39 38 35 FF FF FF FF FF FF FF FF FF FF FF FF
voici mon code :

typedef struct file_lines
{
    uint16_t    address;
    uint8_t        hex_data[16];
    char        ascii_data[17];
}file_line_t;

void
firmware__format_data
(
    char* input_file
){
    file_line_t line[1000];
   
    FILE* file_to_format;
    file_to_format = fopen(input_file, "rb");
   
    char buffer[64];
   
    char *ptr;
    uint16_t nb_line = 16;
    uint8_t j = 0;
   
    //Récupère l'adresse
    fgets(buffer, sizeof (buffer), file_to_format);
    ptr = strtok(buffer, "@");
    sscanf(ptr, "%x", &line[0].address);
    printf("Adresse de debut : 0x%x %u\n", line[0].address, line[0].address);
   
//lecture d'une ligne
    while (fgets(buffer, sizeof (buffer), file_to_format) != NULL)
    {
        ptr = strtok(buffer, " ");
        sscanf(ptr, "%x", &line[0].hex_data[j]);
        printf("%c", line[0].hex_data[j]);
        ptr = strtok(NULL, " ");
        j++;
    }
}

Et au final quand j'affiche line[0].hex_data ça m'affiche le premier caractère de chaque ligne et non chaque caractère de la ligne comme je l'attend...

Je ne vois pas ce qui ne va pas... Quelqu'un a une idée ?

++
vendredi 21 avril 2006 à 18:55:40 | Re : lecture fichier binaire

meech

Membre Club
Réponse acceptée !

Salut,

Le même bout de code avec une petite correction (en rouge) :

#include <stdio.h>
#include <stdlib.h>
#include <elf.h>

typedef struct file_lines
{
  uint16_t    address;
  uint8_t        hex_data[16];
  char        ascii_data[17];
}
file_line_t;

void
firmware__format_data
(
  char* input_file
)
{
  file_line_t line[1000];
  char* hex;

  FILE* file_to_format;
  file_to_format = fopen(input_file, "rb");

  char buffer[64];

  char *ptr;
  uint16_t nb_line = 16;
  uint8_t j = 0;

  fgets(buffer, sizeof (buffer), file_to_format);
  ptr = strtok(buffer, "@");
  sscanf(ptr, "%x", &line[0].address);
  printf("Adresse de debut : 0x%x %u\n", line[0].address, line[0].address);

  while(fgets(buffer, sizeof (buffer), file_to_format)) {
    hex = &buffer;
    while (*hex != 0) {
      char cCurrent;
      sscanf(hex, "%02X", &cCurrent);
      if (cCurrent != -1)
        printf("%c", cCurrent);
      hex+=3;

    }
    printf("\n");
  }

}

int main(int argc, char* argv)
{
  firmware__format_data("firmware.txt");
  return(0);
}



C'est un peu déguelasse (pas de gestion d'erreur sur mon bout de code), mais j'espère t'avoir aidé un peu,
A plus tard.

lundi 24 avril 2006 à 16:36:03 | Re : lecture fichier binaire

SesechXP

Salut !

Merci beaucoup Meech ! Je n'ai pas repris tout à fait la même chose mais ça m'a beaucoup aidé.

++
lundi 24 avril 2006 à 16:38:13 | Re : lecture fichier binaire

meech

Membre Club
Salut,

Ben de rien, c'est le principe des forums... Si tu peux valider ma réponse

A plus tard.
lundi 24 avril 2006 à 16:38:47 | Re : lecture fichier binaire

meech

Membre Club
Ah, c'est déjà fait, cool !


Cette discussion est classée dans : buffer, file, data, line, ff


Répondre à ce message

Sujets en rapport avec ce message

Pb avec une fonction windows... [ par Steak ] j'ai un petit probleme avec la fonction NT UpdateResource... voila ce que dit le sdk win32 : BOOL UpdateResource( HANDLE hUpdate, // update-file handl Mettre un fichier .exe dans un buffer [ par guiguikun ] Je n'arrive pas a mettre un fichier executable en memoire.sur les 100Ko du fichier, mon buffer ne compte que les 3 premiers octets (caracteres)voici m Avis des PROS! [ par UnExPeCtEdSpy ] Bonjour,je suis plus familier du vb que du c++ alors j'vous d'mande de l'aide :J'utilise une Dll en c+ avec un prog en Vb qui manipule des fichiers.Qu allegro data file [ par mat74 ] salut a tssa fait un ptit momment que j'essaie d'utiliser les datafile mais sa ne marche pasje creer le data file avec grabber.exeensuite j'enregistre envoi fichier via socket [ par elanspeech ] Bonjour,J'ai fait un client/serveur, la communication se passe bien. cependant, je ne parviens pas a envoyer plusieurs fichiers a la suite avec la soc jouer data depuis Buffer Audio ? [ par cybermax62 ] bjr, je veux jouer de l'audio issu d'une video .avi. en fait c pour jouer une video sur une surface DDraw, mais bon c pas important ca.j'utilise vfw32 Horoscope (recuperer sur site) [ par Tidam ] Voila j'ai un probleme, avec mon code j'envoi une requette HTTP au serveur et il me renvoi exactement ce que je lui ai envoyé ... quelqu'un pourrait m Texture !! [memory] [ par barraq ] salut, voila dans mon programme a l'initialisation je crée des textures en utilisant cette fonction : bool CreateTexture(UINT &texture, LPCTSTR strFi execution de programme [ par silverfr78021959 ] bonjour a tous, voilà j'ai un probleme quand je veux executer mon prog sur devc++ il m'ouvre la fenteree dos mais la referme aussi tot je peux donc pa demande conseil class [ par silverfr78021959 ] salut as tousje voudrais faire la meme chose que le programme montré ci-dessous, sauf que lamapEt comment je peu acceder au valeur contenu d


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales