【发布时间】:2015-10-22 02:32:59
【问题描述】:
我将如何打印仅使用低级 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");
}
【问题讨论】:
-
以目前的形式,很难说出问题是关于什么的。究竟是什么问题?
-
我想你最好忘记术语低级 I/O。并发布一个简单的高级代码,并要求将其转换为低级。这样我们就可以了解您想要什么。
-
对不起,我发布了我的代码。基本上我希望附加 file2 并将整个文件打印在控制台上
-
显示
open()调用可能是相关的,因为有很多标志可以使用并且会影响结果。O_TRUNC和O_APPEND是两个重要的标志,O_CREAT也是如此。如果没有看到您是如何操纵它的,以及您是如何倒带或重新打开file2.txt以打印到标准输出的,很难猜出问题出在哪里。请阅读如何创建 MCVE (How to create a Minimal, Complete, and Verifiable Example?)。有了这些,很可能会直接解决您的问题。
标签: c stdout low-level low-level-io