c语言高手进,格式输出问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 04:55:28
小弟对c语言的格式输出不熟,想请教一下,如果实现以下输出方式
00000 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a GET / HTTP/1.1..
注意上面第二行跨行了,
是这样的,我有一串数据,如char* p,将p中的字符以16进制打印出来,每行显示16个,然后后面打印每个字符,然后换行,直到打印完止,这个类似于wireshark中的数据显示

#include <stdio.h>

int main()
{
char * p = "This is a test string!!! Please protect our planet!!!!";
int i, count;
char * c = p;

while ( *c != '\0' )
{
printf( "%04X ", c - p );

count = 0;

for ( i=0; i<16; i ++ )
{
if ( *c != '\0' )
{
if ( *c >= 0 )
printf( "%02X ", *c );
else
printf( "%02X ", 256 + *c );
c ++;
count ++;
}
else
{
printf( " " );
}
}

c -= count;

for ( i=0; i<16; i ++ )
{
if ( *c != '\0' )
{
printf( "%c", *c );
c ++;
}
else
{
printf( " " );
}
}

printf( "\n" );
}

getchar();