read()和write()函数不协作

时间:2014-10-11 13:34:32

标签: c linux

任务是将句子从一个文件复制到另一个文件并同时反转。

编译时没有错误,原始文件包含某个句子,但反向文件不保存在第二个文件中。

提前感谢您的帮助。

以下是代码:

#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;
}

1 个答案:

答案 0 :(得分:0)

我将你的while循环更改为:

    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>

在我这边工作。