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

admin2010-04-24  8

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

选项

答案所谓有序文件是指文件的记录按关键字由小到大(或由大到小)顺序存放。为方便起见,可设文件的每一个记录是一个整数,文件上数据是按由小到大顺序存放。设插入数据是命令行的第3个参数,且设为d。若原文件中没有数据,则d写入文件;若有数据,则找到第1个比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<3) { printf("filename int\11") exit(0); } d=atoi(argc[2]); fp=open(argc[1],O_GREAT| O_RDWRI O_BINARY,s_IREAD| S_IWRITE); while(1) { if( read(fp,&I,LEN)!=LEN) {write(fp,&d,LEN): /*文件结束,d添加到文件尾端*/ break;) if(i>=d) /*文件中读出数据i,若i>=d,则先存d*/ { do { fseek(fp,-1L*lan,SEEK_CUR); /*文件指针后退1个记录*/ write(fp,&d,LEN); /*d写到文件中*/ d=i; /*原i作d,以便处理其他数据*/ }while(read(fp,&i,LEN)==LEN); write(fp,&d,LEN);/*继续读数据,并判别文件是否结束*/ break; } } close(fp); } /*main*/

解析
转载请注明原文地址:https://kaotiyun.com/show/ZuAx777K
本试题收录于: 数据结构题库理工类分类
0

随机试题
最新回复(0)