BIN文件如图,我想读取这个BIN文件,
ch= fgetc(fp) ;
printf("%x",*ch) ;
但是每次都是显示ffe8,我不知道原因,求解答!
不要意思,输出函数多了个*,去掉了也是一样的,ch我是这样定义的char ch
1ã使ç¨fopenãfreadãfwriteçCè¯è¨æ ååºä¸çæ件I/Oå½æ°å³å¯å¯¹æ件è¿è¡æå¼ã读åãåå ¥æä½ãä¸é¢çç¨åºå建ä¸ä¸ª.binçæ件ï¼ç¶ååä»éé¢è¯»åæ°æ®ã
#include <stdio.h>int main()
{
FILE* pFile;
float buffer[] = { 2.0 , 3.0 , 8.0 };
pFile = fopen("myfile.bin" , "wb"); // æå¼æ件åæä½
fwrite(buffer , 1 , sizeof(buffer) , pFile); // ææµ®ç¹æ°ç»åå°æ件 myfile.bin
fclose(pFile); // å ³éæ件
float read[3];
pFile = fopen("myfile.bin" , "rb"); // éæ°æå¼æ件读æä½
fread(read , 1 , sizeof(read) , pFile); // ä»æ件ä¸è¯»æ°æ®
printf("%f\t%f\t%f\n", read[0], read[1], read[2]);
fclose(pFile); // å ³éæ件
return 0;
}
2ãbinæ件ä¸è¬æ¯æçäºè¿å¶æ件ï¼å®å¾å¾å ·æ两ç§å½¢å¼ï¼ä¸ç§æ¯æç§ç³»ç»å¹³å°çå¯æ§è¡æä»¶æ ¼å¼ï¼æ¯å¦windowså¹³å°çPEæä»¶æ ¼å¼ï¼Linuxå¹³å°çELFæä»¶æ ¼å¼ï¼å¦å¤ä¸ç§æ¯æåçä¸æ®µäºè¿å¶ä»£ç ï¼æ¯å¦ç³»ç»ç主å¼å¯¼è®°å½mbrï¼å°±æ¯ä¸ä¸ªå å«512个åèçç¨åºï¼ç¨cè¯è¨å¯¹è¿ç±»æ件è¿è¡è¯»åæ¶ï¼å¿ é¡»æä¸å®æ ¼å¼è¿è¡è§£æãèä¸å¸¸ç¨çæ¹æ³ä¸æ¯ä½¿ç¨Cè¯è¨çI/Oæä½ï¼èä¸è¬ä½¿ç¨ç³»ç»æä¾çæ件å åæ å°æ¹æ³ã
printf("%02x ",(unsigned char)ch) ;
如果要回车什么的话(就是一行16个这样的格式)就自己加吧
谢谢采纳
有问题继续本回答被提问者和网友采纳
去掉*后,还是一样的话,那就是你的fp文件指针并没有指向正确的文件,你需要判断下你的fp是否为NULL,如果是表示你的文件打开错误了
如果是char *ch,那么*ch= fgetc(fp) ;
bin:二进制文件