对此行为有何解释?

时间:2013-08-06 13:51:30

标签: c linux file file-io text-files

我正在编写一个代码来反转文本文件。 例如:abc应该成为cba

我编写的代码很好而且有效。 但我注意到这种奇特的行为。 如果我再次将反转输出作为输入,则会跳过反转输入文件的最后一个字符。 为什么它第一次正常工作并且下次跳过一个角色?

以下是代码:

int main(){
    int fin, fout;
    char c[1];
    fin = open("input.txt",O_RDONLY);
    fout = open("reverse_input.txt",O_WRONLY|O_TRUNC);
    lseek(fin, -2, SEEK_END);
    do{
        read(fin, c, 1);
        write(fout,c,1);
    }while(lseek(fin, -2, SEEK_CUR) >=0);
    close(fin);
    close(fout);    
    return 0;
}

猜测我错过了某种EOF角色......

1 个答案:

答案 0 :(得分:1)

你需要将fin中的最后一个char写为fout的最后一个char。