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] = '.';
        buff[i % 16] = pc[i];
    buff[(i % 16) + 1] = '\0';

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

// 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.


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.