如何验证C中的标准输入是否为空? 我有一个学校项目,我们只允许使用malloc,写,读和免费,但我在网上找到的唯一解决方案使用我不允许使用的功能。 我的阅读完美无缺,除非你没有把任何东西放在输入中。
这是我的代码:
char *ft_get_buffer(void)
{
char buf[10];
int ret;
int count;
char *result;
count = 0;
result = "";
while (1)
{
ret = read(0, buf, 10);
count += ret;
if (ret < 10)
{
buf[ret] = '\0';
result = ft_ralloc(buf, result, count);
break ;
}
else
result = ft_ralloc(buf, result, count);
}
return (result);
}
回声&#34;测试&#34; | ./mybinary //工作得很好
echo ./mybinary //无限循环
答案 0 :(得分:0)
read()
将被阻止。
所以代码将会“坐下来”。在read()
上,直到发生以下四件事之一:
char
个数 - 返回请求char
count char
次读取的数量,可以是0
-1
要检查任何返回条件立即检查ret
的值,然后再将该值用于任何目的。
检查:
ret ==
请求char
s的数量 - 然后循环以阅读更多0 <= ret <
请求的char
s - 遇到的EOF数量,相应处理0 > ret
- 发生错误,处理错误