0
#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 个字符?

4

1 回答 1

2

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

于 2013-03-29T07:57:44.830 回答