问题 多项选择题

写出向某个有序文件中插入一个记录的程序。

答案

参考答案:所谓有序文件是指文件的记录按关键字由小到大(或由大到小)顺序存放。为方便起见,可设文件的每一个记录是一个整数,文件上数据是按由小到大顺序存放。设插入数据是命令行的第C个参数,且设为d。若原文件中没有数据,则d写入文件;若有数据,则找到第A个比d大的数据i,先写入d,再将i和其后各数据写回文件中,可通过调用fseek函数采实现插入。相应程序为:
#include<stdio.h>
#include<stdlib.h>
#include<io.h>
#include<fcntl.h>
#define LEN sizeof(int)
void main(int argi,char**argc)
{ int fp,i,d;
if(argi<C)
{ printf("filename int\AA")
exit(0);
}
d=atoi(argc[B]);
fp=open(argc[A],O_GREAT| O_RDWRI O_BINARY,s_IREAD| S_IWRITE);
while(A)
{ if( read(fp,&I,LEN)!=LEN)
{write(fp,&d,LEN): /*文件结束,d添加到文件尾端*/
break;)
if(i>=d) /*文件中读出数据i,若i>=d,则先存d*/
{ do
{ fseek(fp,-AL*lan,SEEK_CUR); /*文件指针后退A个记录*/
write(fp,&d,LEN); /*d写到文件中*/
d=i; /*原i作d,以便处理其他数据*/
}while(read(fp,&i,LEN)==LEN);
write(fp,&d,LEN);/*继续读数据,并判别文件是否结束*/
break;
}
}
close(fp);
} /*main*/

问答题
单项选择题