请问在这个程序中
#include <stdio.h>
#include <errno.h>
#include <io.h>
#include <fcntl.h>
#include <string.h>
#define FILENAME "test.bin"
#define MAX_STRING_LENGTH 3
int WriteData(int fh, void *buf, int len);
struct data
{
int i;
float f;
char string[MAX_STRING_LENGTH+1];
char end[4];
};
int main()
{
struct data block;
int fh, rtn;
memset(&block, 0, sizeof(block));
block.i = 100;
block.f = 100.0;
strcpy(block.string, "100");
strcpy(block.end ,"END");
fh = open(FILENAME, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY,0666);
if(fh == -1)
{
perror(FILENAME);
return;
}
rtn = WriteData(fh, &block, sizeof(block));
if(rtn < 0)
{
perror(FILENAME);
return;
}
close(fh);
system("pause");
return 0;
}
int WriteData(int fh, void *buf, int len)
{
int written = 0;
int val;
while( written < len )
{
val = write(fh, ((char*)buf)+written, len-written);
if(val == -1)
{
return val;
}
written += val;
}
return written;
}
请问这句语句:val = write(fh, ((char*)buf)+written, len-written);是怎么执行的?
能不能说得详细点啊?
追答再详细 就是 bios 的文件中断调用了,比如 入口,ax 寄存器放 什么,bx 放什么, int13
中断, 汇编语言的 语法
具体的可以查看一些关于中断调用的文献资料了
好深奥。我只是想解释那句语句。怎撤到硬件上了呢?
追答没有,这个还在软件范畴,不过就是底层的调用了
本回答被提问者和网友采纳