Почему эта программа печатает только первую строку?

Может кто-нибудь объяснить, почему следующий код печатает только первую строку, а не первые 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);

-3

Решение

если в строке 30 слов. После этого новая строка тогда newLinePosition будет 30 правильно? поэтому не будет второй строки при 30> 3.

for(int i = 0; i < numRead && newlinePosition < 3; i++) {
if(buf[i] == '\n') {
newlinePosition++;
if(i + 1 < numRead) {
newlinePosition += 1;
}
}
}

хотя я не уверен, почему я + 1 < numRead используется. Но это должно помочь вам.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]