一个printf的问题
/* 程序读取一个二进制可执行程序,用printf打印读出的每一个字节显示方式为 1.字节与字节之间 一个空格
2.8个字节为一组 组与组之间4个空格,一行输出2组后换行
但是输出 printf("%x ",buff[i]); 这个语句输出的结果 里面有32位的 比如 ffffff90 这样的显示
很为难,求大侠提点问题所在
*/
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
//#define ispwdstr(x) (x>=0x20&&x<=0x7e)
#define FILE_DERECTORY "E:\\stu1\\stu1\\bin\\Debug\\stu1.exe"
int main()
{
FILE* file;
char buff[4096];
int i,m,n;
struct stat fstat;
stat(FILE_DERECTORY,&fstat);
n=fstat.st_size;
if((file=fopen(FILE_DERECTORY,"rb"))==NULL)
printf("文件打开失败");
while(!feof(file)){
fread(buff,4096,1,file);
if((n/4096)>0){
m=4096;
n-=4096;
}
else
m=n%4096;
for(i=0;i<m;i++){
if(i==8)
printf(" ");
else if(i==16)
printf("\n");
printf("%x ",buff[i]); //-------->
}
}
return 0;
}
[ 本帖最后由 zhu224039 于 2014-3-3 19:34 编辑 ]