Проблема с функцией lseek в программе копирования файлов! - PullRequest
0 голосов
/ 04 декабря 2009

Нужно использовать функцию 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 ]

2 голосов
/ 04 декабря 2009
 int desc_sorc, desc_targ;

Вы на самом деле ничего не инициализируете. Anywhere.

РЕДАКТИРОВАТЬ: Теперь, когда вы это исправили, вы действительно проверили это снова?

0 голосов
/ 05 декабря 2009

Вам не хватает эквивалента strrev(...), чтобы полностью перевернуть записываемую строку, начиная с конца исходного файла и читая назад или записывая с конца целевого файла обратно в начало.

Фактическая реализация оставлена ​​читателю в качестве упражнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...