0

I again have a C code that i need in c++

#include <stdio.h>

void hexDump (char *desc, void *addr, int len) {
int i;
unsigned char buff[999];
unsigned char *pc = addr;

// Output description if given.
if (desc != NULL)
    printf ("%s:\n", desc);

// Process every byte in the data.
for (i = 0; i < len; i++) 
{
    // Multiple of 16 means new line (with line offset).

    if ((i % 16) == 0) 
    {
        // Just don't print ASCII for the zeroth line.
        if (i != 0)
            printf ("  %s\n", buff);

        // Output the offset.
        printf ("  %04x ", i);
    }

    // Now the hex code for the specific character.
    printf (" %02x", pc[i]);

    // And store a printable ASCII character for later.
    if ((pc[i] < 0x20) || (pc[i] > 0x7e))
        buff[i % 16] = '.';
    else
        buff[i % 16] = pc[i];
    buff[(i % 16) + 1] = '\0';
}

// Pad out last line if not exactly 16 characters.
while ((i % 16) != 0) 
{
    printf ("   ");
    i++;
}

// And print the final ASCII bit.
printf ("  %s\n", buff);
}

int main (int argc, char *argv[]) 
{
  char my_str[1000];
  char infile[100];

  printf("Enter input file: ");
  scanf("%s", infile, 99);

      FILE *fp;
      fp = fopen(infile, "r+");

  while(fgets(my_str, 999, fp) != NULL)
      {
      }

hexDump ("my_str", &my_str, sizeof (my_str));
return 0;
}

so please rewrite it in c++ and if you have a better way include that also.

Thanks

2
Contributors
1
Reply
4
Views
4 Years
Discussion Span
Last Post by BobS0327
0

hexDump ("my_str", &my_str, sizeof (my_str));

First of all, what's wrong with the above statement? Specifically, what's wrong with the third input argument?

if you have a better way include that also

IMHO, I believe you should open the input file in binary mode.

ifstream myFile(argv[1], ios::in | ios::binary);

Then read the first byte and then set the fill character to handle single digit hex values.
Next use a while loop to iterate thru the file reading one hex at a time with your basefield format set to hex and set the field width to two.

This should be enough to at least get you started on your c++ conversion.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.