Dump

Contenu du snippet

Ce code enregistre dans /home/debug.txt un dump du fichier entré en argument à l'éxécution du programme.
c'est plus ou moins inutile,mais il y a un début à tout!

Source / Exemple :


#include <stdio.h>

/* pour compiler avec gcc: gcc dump.txt -o dump */

/////////////////////////////////////////////////
// dump de fichier pour linux                  //
//                                             //
// commande:nom_executable nom_fichier d_entree//
/////////////////////////////////////////////////

int main(int argc,char* argv[])
{
  int a=-16,i,b[16],c;
  unsigned size=0;
  FILE *fp,*fo;
  fo=fopen("/home/debug.txt","w");   //ouverture du fichier pour enregistrer le dump
  if ((fp=fopen(argv[argc-1],"r"))==NULL)
    {
      printf("Echec lors de l'ouverture du fichier \"%s\".\n",argv[argc-1]);
      exit(1);
    }
  printf("Ouverture du fichier \"%s\" réussie.\n",argv[argc-1]);
  fprintf(fo,"Ouverture du fichier \"%s\" réussie.\n",argv[argc-1]);
  fprintf(fo,"\n---------------- Debug : ----------------\n\n");
  puts("En cours ...");
 
  do
    {
      fprintf(fo,"%08X\t",a+=16);
      i=0;
      while (i<16 && c!=EOF)
	{
	  size++; //incrementation de la variable contenant la taille du fichier
	  c=fgetc(fp);   //octet suivant du fichier
	  if (i==8) fprintf(fo," -  ");
	  fprintf(fo,"%02X ",b[i]=c);
	  i++;
	}
      fprintf(fo,"\t");
      for(i=0;i<16;i++)
	{
	  if (isprint(b[i]))
	    fprintf(fo,"%c",b[i]);
	  else
	    fprintf(fo," ");
	}
      fprintf(fo,"\n");;
    }while (c!=EOF);

  fprintf(fo,"\nFin du fichier\nTaille du fichier:%d octets soit %f Ko.",size,(float) size/1024);
  puts("Debug enregistré dans le fichier /home/debug.txt");
  fclose(fp);
  fclose(fo);
  return 0;
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.