@dandropov95

В каком случае будет достигнут «конец файла» при считывании данных с клавиатуры?

Есть вот такая функция считывания строки. Внутри используется функция fgets(). Данная функция возвращает NULL если произошла какая то ошибка или был достигнут конец файла.
При каких условиях происходит обнаружение "конца файла" при считывании с клавиатуры?

char * s_gets(char * str, int n)
{
	char * return_value;
	int i = 0;

	return_value = fgets(str, n, stdin);

	if (return_value)
	{
		while (str[i] != '\n' && str[i] != '\0')
			i++;

		if (str[i] == '\n')
			str[i] = '\0';
		else
			while (getchar() != '\n')
				continue;
	}

	return return_value;
}
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Стандартный признак конца файла - Ctrl+Z. В Windows надо ещё нажать Enter или Ctrl+M.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sM0kfyz
@sM0kfyz
Frontend dev.
Если у вас linux, то она будет считывать до того момента, когда вы нажали enter, потом вернет NULL. Если вы хотите считать длинный текст, то используйте подобный цикл:
while(fgets(str, n, stdin));
Тогда ваш текст будет считываться пакетами длины n.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы