红联Linux门户
Linux帮助

求大神帮忙看一下我的程序哪块出问题了

发布时间:2013-10-08 18:59:39来源:红联作者:那个小明
实现一种算法,能够循环对文件进行写入,
实现类似日志的操作
* 1,文件的大小不得超过 size
* 2,可以不断接受输入并写入文件,保持最新的输入在文件内,
文件写满的时候从旧的内容开始清除和覆盖。
* 3,可以读出当前文件内的所有记录。
*/
#include
#include
#include
#include
#include
#define FILESIZE 100
int main(int argc,char *argv[])
{
int fb1,fb2,index,size;
int buf1[2];
char *buf2;
if((fb1 = open(argv[1],O_RDONLY)) == -1)
{
fb1 = open(argv[1],O_CREAT,0777);
fb2 = open(argv[2],O_RDWR|O_CREAT,0777);
index = 0;
size = 0;
buf1[1] = index;
buf1[2] = size;
write(fb1,buf1,8);
}
else
{
fb1 = open(argv[1],O_RDWR);
fb2 = open(argv[2],O_RDWR);
}
lseek(fb2,index,0);
read(fb1,buf1,8);
index = buf1[1];
size = buf1[2];
if((index+sizeof(argv[3])-1)<=FILESIZE)
{
write(fb2,buf2,(sizeof(argv[3])-1));
buf2 = argv[3];
if((size+sizeof(argv[3])-1)>=FILESIZE)
{
size = FILESIZE;
}
else
{
size = size + sizeof(argv[3])-1;
}
buf1[1] = index;
buf1[2] = size;
write(fb1,buf1,8);
}
else
{
write(fb2,buf2,(FILESIZE-index));
lseek(fb2,0,0);
write(fb2,buf2,(sizeof(argv[3])+index-FILESIZE));
buf1[1] = lseek(fb2,0,1);
buf1[2] = FILESIZE;
}
close(fb1);
close(fb2);
return 0;
}
文章评论

共有 2 条评论

  1. Yohcc 于 2013-10-09 08:50:51发表:

    帮顶下

  2. wangjinwen 于 2013-10-09 08:19:45发表:

    新人学习中