<分区>
我尝试读取二进制(可执行)文件,但出现了一些问题,因为它每隔几个字节就会打印额外的字符 (0xffffff)。但是这段代码非常适合文本文件(非二进制)。代码是:
int main(int argc, char **argv) {
uint64_t i=0;
FILE * fp=fopen(argv[1],"rb");
uint8_t a;
long int size=0;
char *msg;
size=findSize(argv[1]);
msg=(char *)malloc(size+1);
while((a=fgetc(fp))!=EOF)
{
printf("%02x",a);
msg[i]=(char)a;
i++;
if(i==size)
break;
}
i=0;
for(i=0;i<size;i++)
{
printf("%x",msg[i]);
}
return 0;
}
当我尝试打印 a 的值时,它完美地工作,而在打印 msg[i] 时,它会打印额外的字节 i,e:
原始字节: 0xa31c4b1ab66b900
带有额外字节的输出: 0xa31c4ffffffb1ffffffafffffffb66ffffffb900