复制文件程序中的lseek功能问题!

时间:2009-12-04 18:41:46

标签: c file text-files

在下面的程序中使用lseek函数...程序只是复制文件(已经存在)。我想用文件末尾的字符复制现有文件 例如:Sorce_File.txt包含:复制后的“1 2 3”Target_File.txt包含:“3 2 1”

我很确定这是一个简单的问题但是从2天后就找不到怎么做

   #include <fcntl.h>

   #include <stdio.h>

   #define MAX 512

   int main(int argc, char* argv[]){
 char buf[MAX];
 int desc_sorc, desc_targ;
 int lbajt;

 if (argc<3){
  argv[0];
    exit(1);
 }

 desc_sorc = open(argv[1], O_RDONLY);
  if (desc_sorc == -1){

 }

 desc_targ = creat(argv[2], 0640);
 if (desc_targ == -1){
  exit(1);
  }

 while((lbajt = read(desc_sorc, buf, MAX)) > 0){

  if (lbajt ==  -1) {
    perror("position error");
    exit(1);}

  if (write(desc_targ, buf, lbajt) == -1)

{
   exit(1);


    }
  } 
 if (lbajt == -1){
    exit(1);
 } 

 if (close(desc_sorc) == -1 || close(desc_targ) == -1){
    exit(1);
 }

 exit(0);
 }

2 个答案:

答案 0 :(得分:2)

 int desc_sorc, desc_targ;

您实际上并未将这些内容初始化为任何内容。任何地方。

编辑:既然你已经解决了这个问题,你真的再次测试了吗?

答案 1 :(得分:0)

你在那里缺少等价的strrev(...)来反转你写出来的字符串,从源文件的末尾开始并向后读或从目标文件的末尾写回到开头。

实际的实施留给读者练习。