关于printf函数的格式符问题
一个关于引导扇区数据的提取:不过提取出来的结果跟用DISKEDIT.EXE提取出来的不一样.一般是算法出现在错误请大家帮我解释一下这段码:
我把代码附上:
#include <dos.h>
#include <stdio.h>
#include <alloc.h>
int main()
{
union REGS i,o;//定义联合体 寄存器 i,o
struct SREGS es;
FILE * f;
char *s=(char*)malloc(512); //s是由远堆分配的指针,是个带段地址:偏移量的指针
i.h.ah=0x02;//赋值初始化,等同于汇编的ah=ox02为入口参数指定功能号;
i.h.al=1; //h表示byteregs,AL为要读取的扇区数;
i.h.ch=0;
i.h.cl=1; //CL高2位+CH=柱面号,CL低6位=扇区号;
i.h.dh=0; //DH磁头号;
i.h.dl=0x80; //DL表示磁盘号;
i.x.bx=(unsigned short)s; //x表示wordregs
es.es=FP_SEG(s); //第一个es表示定义的段寄存器,第二个es表示sregs中的一个体结构.函数是获取远指针*S段地址的值。
CS:BX=存放读取数据的内存缓冲地址~~~~出口参数:CS:BX=读取数据存放地址~~~错误信息:如果出错CF=1 AH=错误代码
printf(" s=%Fp,SS=%x,DS=%x,ES=%x",s,_SS,_DS,_ES);
int86x(0x13,&i,&o,&es);
f=fopen("C:\\Partable.bin","w+b");
fwrite(s,512,1,f); 写入数据块的地址,数据块的大小,数据块的数目,指定要写入的文件
fclose(f);
free(s);
}
我还想问一下,关于printf函数中的s=%Fp这个格式符的意思.