3

我将如何打印仅使用低级 I/O 函数附加到的文件的内容?

我得到的最接近的是打印我用来附加示例的文本:

file1.txt = dog
file2.txt = cat

我想要file2.txt,现在是“catdog”被打印出来。我该怎么做?

如前所述,我只能让“狗”打印。我也成功地附加了文件。我知道这可能是非常简单的解决方案,但我已经摸索了好几个小时。

我的代码

while (1) {
        if ((bufchar = read(fdin1, buf, sizeof(buf))) > 0) {
                bp = buf;   // Pointer to next byte to write.
                while (bufchar > 0) {
                        if ((wrchar = write(fdin2, bp, bufchar)) < 0)
                                perror("Write failed");
                        bufchar -= wrchar;   // Update.
                        bp += wrchar;
                }
        }
        else if (bufchar == 0) {  // EOF reached.
                break;
        }
        else
                perror("Read failed");
}
4

1 回答 1

0

请注意,如果您要附加到 file2.txt,那么它将是“catdog”,而不是相反。如果您只能让 dog 写出,请实际进入文件以确保您实际上是在追加而不是简单地覆盖文件。

下面是一些关于低级文件 I/O 细节的阅读材料。阅读打开和关闭文件和原始 I/O 操作的前两个链接。在没有看到任何代码的情况下很难为您提供帮助,尽管您可能没有正确关闭文件,因此您的附加行没有保存......

于 2015-10-22T02:40:45.273 回答