gpt4 book ai didi

c - 超出 read() 的缓冲区大小

转载 作者:行者123 更新时间:2023-11-30 14:20:12 31 4
gpt4 key购买 nike

#define MAX_BUFF_SIZE   64
char input[MAX_BUFF_SIZE];

int inSize = read(0, input, MAX_BUFF_SIZE);
if(inSize <= 0 || inSize > MAX_BUFF_SIZE){
printf("An error occurred in the read.\n");
exit(-1);
}

我正在编写一个程序,该程序会提示用户输入,并且此输入的最大大小为 64 个字符。如果用户输入超过 64 个字符,程序应该退出。

我相信我正确使用了 read(),但即使我传入 > 64 个字符,它也永远不会导致任何错误/异常。我在这里做错了什么?

无论如何,我可以检查用户是否使用 read() 输入了超过 64 个字符?

最佳答案

read() 永远不会读取超过您允许的字节数。如果您告诉它最多读取 64 个字节,即使有更多可用数据,它也最多会读取 64 个字节。尚未读取的字节可用于进一步读取(我假设输入STDIN_FILENO,在这种情况下,它们只是留在标准输入缓冲区中)。

关于c - 超出 read() 的缓冲区大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15699443/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com