基本的に、次のようなものを表示するプログラムが必要です: http://i.imgur.com/ZOfnEJm.png
ほとんどの場合、コードがダウンしているような気がします。||
ただし、コードの一部の間に何かを表示するのに問題があります。コンパイルすると、間に何も表示されません。「フォーマット」は次のようになっているはずです:
the memory address is on the far left, followed by two groups of eight-byte sequences (each byte is represented with a two-digit hex value), followed by the ASCII representation of the hex bytes placed between the vertical bars on the far right
. 16 進コードが ASCII 文字でない場合は、ピリオド (.) を表示します。
コードに続いて、次のようにします。
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
void DumpMem(void *arrayPtr, int numBytes);
int main()
{
auto int numBytes;
auto double *doublePtr;
auto char *charPtr;
auto int *intPtr;
// Doubles
printf("How many doubles? ");
scanf("%d", &numBytes);
doublePtr = malloc(numBytes * sizeof(doublePtr));
if (NULL == doublePtr)
{
printf("Malloc failed!");
}
printf("Here's a dynamic array of doubles... \n");
DumpMem(doublePtr, numBytes);
free(doublePtr);
// Chars
printf("\nHow many chars? \n");
scanf("%d", &numBytes);
charPtr = malloc(numBytes * sizeof(charPtr));
if (NULL == charPtr)
{
printf("Malloc failed!");
}
printf("Here's a dynamic array of chars... \n");
DumpMem(charPtr, numBytes);
free(charPtr);
// Ints
printf("\nHow many ints? \n");
scanf("%d", &numBytes);
intPtr = malloc(numBytes * sizeof(intPtr));
if (NULL == intPtr)
{
printf("Malloc failed!");
}
printf("Here's a dynamic array of ints... \n");
DumpMem(intPtr, numBytes);
free(intPtr);
}
void DumpMem(void *arrayPtr, int numBytes)
{
auto unsigned char *startPtr = arrayPtr;
auto unsigned char *ptrOne = startPtr;
auto unsigned char *endPtr = arrayPtr + numBytes;
auto int counter = 0;
printf("%p ", &startPtr);
for (; startPtr < endPtr; startPtr++)
{
printf("%02x ", *startPtr);
counter++;
if (counter == 16)
{
printf("|");
for(; ptrOne < 16; ptrOne++)
{
if (isalpha(*ptrOne))
{
printf("%c", *ptrOne);
}
else if (isdigit(*ptrOne))
{
printf("%d", *ptrOne);
}
else if (ispunct(*ptrOne))
{
printf("%c", *ptrOne);
}
else
{
printf(".");
}
}
printf("|");
printf("\n");
printf("%p ", &startPtr);
counter = 0;
}
}
}
それで、考え?助けてください!