【发布时间】:2017-11-04 17:01:15
【问题描述】:
有人能解释一下为什么下面的代码只打印出第一行而不是前 3 行吗?我在一张纸上手动完成了 for 循环,我认为它会增加 3 行,但我的逻辑必须在某个地方关闭。
#include <cstdlib>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <iostream>
using namespace std;
#define BUFFSIZE 1024
int main(int argc, char** argv) {
char buf[BUFFSIZE];
int numRead = 0;
int newlinePosition = -1;
numRead = read(fd, buf, BUFFSIZE);
for(int i = 0; i < numRead && newlinePosition < 3; i++) {
if(buf[i] == '\n') {
newlinePosition = i;
if(i + 1 < numRead) {
newlinePosition += 1;
}
}
}
if(newlinePosition < 0) {
newlinePosition = numRead;
}
write(STDOUT_FILENO, buf, newlinePosition);
【问题讨论】:
-
给出整个代码
-
好的,我更新了它以包含其他所有内容。
-
仍然缺少一些东西。
fd是什么? -
有人回答了我之前要找的东西。还是谢谢!
标签: c++ low-level-io