【发布时间】:2022-01-25 15:09:02
【问题描述】:
我正在尝试部分读取输入,直到输入新行“\n”。但是如何使用 read() 函数来做到这一点?现在我已经进行了部分读取,直到终端界面注销并停止输入(在linux终端上按 ctrl+d ),但不知道如何在输入新行时停止。这是我的代码:
int fd = 0;
const size_t read_size = 100;
size_t size = read_size;
char *buff = malloc(size+1);
size_t offset = 0;
size_t res = 0;
while((res = read(fd, buff + offset, read_size)) > 0)
{
offset += res;
buff[offset] = '\0';
if (offset + read_size > size)
{
size *= 2;
buff = realloc(buff, size+1);
}
}
return buff;
【问题讨论】:
-
为什么不用
fgets函数? -
我在操作系统级别工作,所以只使用读取、写入、打开、关闭、lseek 等。它的部分读取因为它更快