Как проверить, не пуст ли стандартный ввод в C? У меня есть проект для школы, и нам разрешено использовать malloc, писать, читать и бесплатно, но единственные решения, которые я нахожу в функциях веб-использования, мне не разрешают использовать. Мое чтение отлично работает, за исключением случаев, когда вы ничего не помещаете во входные данные.C return null, если чтение 0 пусто
Вот мой код:
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 // работает отлично
эхо ./mybinary // бесконечный цикл
Эта программа скоро закончилась на [Wandbox] (http://melpon.org/wandbox/permlink/0VH7sPB6aFUkoqiO) с отключением 'ft_ralloc'. Попробуйте отладить, напечатав 'ret', или проблема может быть в' ft_ralloc'. – MikeCAT
read() возвращает -1, если есть ошибка ввода-вывода. Думать об этом. Что делает ваш код в этом случае? – Gene
Пробовал ли вы «echo» test »| ./mybinary' с 'test' размером' 0'? – alk