gpt4 book ai didi

如果读取 0 为空,C 返回 null

转载 作者:行者123 更新时间:2023-11-30 17:08:55 27 4
gpt4 key购买 nike

如何验证 C 中的标准输入是否为空?我有一个学校项目,我们只允许使用 malloc、write、read 和 free,但我在网上找到的唯一解决方案使用了我不允许使用的功能。除非您不在输入中添加任何内容,否则我的读取效果非常好。

这是我的代码:

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);
}

回显“测试”| ./mybinary//工作正常
echo ./mybinary//无限循环

最佳答案

read()除非遇到 EOF 或发生信号事件,否则将阻塞。

所以代码将“坐在” read() 上直到发生以下 4 件事之一:

  1. 请求的数量 char输入 s — 返回请求 char计数
  2. 遇到 EOF — 返回数量 char s 读取,可以是 0
  3. 出现信号 - 退出执行路径
  4. 发生 I/O 错误 — 返回 -1

立即检查任何返回条件,请检查 ret 的值在将该值用于任何目的之前。

检查:

  1. ret ==请求数量char s — 然后循环阅读更多内容
  2. 0 <= ret <请求数量char s — 遇到 EOF,进行相应处理
  3. 0 > ret — 发生错误,处理错误

关于如果读取 0 为空,C 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33463101/

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