使用系统函数 write 打印文件的前 3 行
print first 3 lines of a file using system function write
我正在尝试使用 c 中写入的系统函数打印前 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 字节的缓冲区中读取数据。那会导致崩溃。
我正在尝试使用 c 中写入的系统函数打印前 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 字节的缓冲区中读取数据。那会导致崩溃。