2014-10-11 2 views
1

Задача состоит в том, чтобы скопировать предложение из одного файла в другой и отменить его между тем.Функции read() и write() не взаимодействуют.

Ошибок при компиляции, исходный файл содержит определенное предложение, но обратное одно не сохраняется во втором файле.

Заранее за вашу помощь.

Вот код:

#include <stdio.h> 
#include <fcntl.h> 
#include <errno.h> 

int main(int argc, char* argv[]) { 

    int file1 = open("a.txt", O_CREAT | O_RDWR | O_TRUNC, 0777); 

    write(file1, "How are you?", 12); 

    lseek(file1, -1, SEEK_END); 

    //////////////////////////////// 

    char c; 

    int file2 = open("b.txt", O_CREAT | O_RDWR | O_TRUNC, 0777); 

    while(read(file1, &c, 1)) { 

    write(file2, c, 1); 
    lseek(file1, -1, SEEK_CUR); 
    } 

    //////////////////////////////// 

    close(file1); 
    close(file2); 

    return 0; 
} 
+0

не должен 'lseek (file1, -1, SEEK_CUR);' be 'lseek (file2, -1, SEEK_CUR);'? – Apoorv

+0

Я хочу поставить предложение из файла1 в файл2 в обратную версию, поэтому каждый сохраненный шаг мне нужно переместить указатель справа налево в файле1. Я думаю так. –

+0

@Apoorv - нет, не следует. – enhzflep

ответ

0

Я изменил свое время цикла к следующему:

int i = 0; 
    while(read(file1, &c, 1)) { 
     i++; 
     write(file2, &c, 1); 
     lseek(file1, -2, SEEK_CUR); 

     if(i==12) // 12 is length of file which is being read. 
      break; 

    } 

и включил это:

#include <sys/types.h> 
#include <unistd.h> 

работает на моей стороне.

+1

Это, безусловно, часть проблемы, но не решение само по себе. – enhzflep

+0

Я изменил его, но проблема все еще возникает. –

+0

@csal: проверьте сейчас –