我想知道是否有方法在使用 read(...)
从标准输入读取时动态分配缓冲区。
例如:
n = read(0, buffer, sizeof ?);
我该如何确保从 stdin
中读取的字节数(这里是 0)与 buffer
中的字节数相同?
我想知道是否有方法在使用 read(...)
从标准输入读取时动态分配缓冲区。
例如:
n = read(0, buffer, sizeof ?);
我该如何确保从 stdin
中读取的字节数(这里是 0)与 buffer
中的字节数相同?
char buf[BUF_SIZE];
int num_read = read(0, buf, BUF_SIZE);
然后确定是否还有更多数据可用(通常通过检查num_read
是否等于BUF_SIZE
来判断,但在某些情况下,您可能需要解释数据本身)。如果有,那么您需要进行另一次读取。以此类推。
您需要处理连接所有读取数据的问题。
除非你有预知能力,否则你无法确定你将获得的大小。
但是,读取方法允许您逐部分读取stdin的内容,如果您将read()调用放入(while your_stop_condition
)循环中,您将能够通过数据包从stdin读取所需的所有内容。
char buffer_to_read[SIZE];
int bytes=0;
while your_stop_condition
{
bytes = read(0, buffer_to_read, SIZE);
// do what you want with your data read
// if bytes < SIZE, you read an EOF
}