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

时间:2017-10-30 19:46:24

标签: c operating-system fwrite

我正在尝试使用中的系统函数写入打印前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行

1 个答案:

答案 0 :(得分:1)

函数write()会将多个字节写入文件(或stdout)。你需要找出线的末端。

您在此处拥有的代码存在许多问题。变量count未设置为任何值,因此它始终为0。

此外,从您在这里的代码中,您正在读取1字节缓冲区。这会导致崩溃。