使用系统函数 write 打印文件的前 3 行

print first 3 lines of a file using system function write

我正在尝试使用 中写入的系统函数打印前 3 行。

我有以下代码:

ssize_t wresult = 0; 
ssize_t res;
ssize_t rresult = 0;
char buff[1];
int count = 0;

while((rresult = read(fd, buff,1))!= 0 ) 
{
    while(wresult != rresult){
        ssize_t res = 0;
        res = write(STDOUT_FILENO,buff+wresult,rresult-wresult);
        if(res < 0) return -1;
        wresult += res;
        count++;
        if(count == 3) break;
    }
}

然而,输出不是我想要的——它输出了整个文件(超过 10 行)。
如何打印前 3 行

函数write() 将向文件(或标准输出)写入一定数量的字节。你需要弄清楚行尾在哪里。

你这里的代码有很多问题。变量 count 未设置为任何值,因此它将始终为 0。

此外,根据您在此处的代码,您正在从一个 1 字节的缓冲区中读取数据。那会导致崩溃。