我做了什么:以相反的顺序复制文件的内容。我不能做的是:正向复制内容。
我在网上进行了研究,发现lseek()
有这个论点..
lseek(file_descriptor,offset,whence);
对于反向阅读,逻辑是直截了当的。我的代码如下:
#include<fcntl.h>
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
void main(int argc,char *argv[])
{
int fd,fd1,count=0;
char ch='y',buffer;
if(argc>3)
{
printf("\nSyntax Error!<try> ./cp source_name destination_name\n");
exit(0);
}
fd=open(argv[1],O_RDWR);
if(fd==-1)
{
printf("\nCan not open source file .. :(\n");exit(0);
}
fd1=open(argv[2],O_RDWR);
if(fd1=!-1)
{
printf("\nDestination file exist , OverWrite (Y/N) :");
scanf("%s",&ch);
}
if(ch=='y'||ch=='Y')
fd1=creat(argv[2],O_RDWR|0666);
else
exit(0);
while(lseek(fd,count,2)!=-1)
{
count--;
read(fd,&buffer,sizeof(char));
write(fd1,&buffer,sizeof(char));
}
}
我认为可以对正向复制文件进行哪些更改。
count=0;
lseek(fd,count,0)!=-1
but this is taking the program in infinite loop . need help .