c - 在 C 中将文件内容打印到标准输出低级 I/O

标签 c stdout low-level low-level-io

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

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

file1.txt = dog
file2.txt = cat

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

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

我的代码

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");
}

最佳答案

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

这里是一些关于低级文件 I/O 细节的读物。阅读顶部的两个链接,了解打开和关闭文件以及原始 I/O 操作。没有看到你的任何代码,很难帮助你,尽管你可能没有正确关闭文件,所以你附加的行没有保存......

关于c - 在 C 中将文件内容打印到标准输出低级 I/O,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33272461/

相关文章:

c - char* 指向哪里?

bash - 如何将程序的输出同时定向到控制台和日志文件?

c - 在可移植 C 中将标准输出移出控制台

embedded - 在哪里可以了解有关低级编程的更多信息?例如设备驱动程序

c - 连接超时在 select() 调用的上下文中意味着什么

c++ - 您将如何编写可能优化为一条 SSE 指令的无符号加法代码?

c - 在 C 中处理结构数组

lisp - 普通口齿不清 : flush standard output

c++ - 低级 Hook /SetWindowsHookEx lParam 自动重复?

performance - 估计处理器频率如何影响 I/O 性能