Libchecker:checker read line ex

From EjudgeWiki

Навигация: Главная страница/Система ejudge/Проверяющие программы/libchecker/Функции/Чтение файла как текста/checker_read_line_ex

Функция checker_read_line_ex — чтение одной строки текста из текстового файла.

int
checker_read_line_ex(
        FILE *f,
        checker_error_func_t error_func,
        const char *name,
        int eof_error_flag,
        char **out_str);

Функция считывает одну строку текста из файла f в память. Параметр name — это дополнительный пояснительный текст, который будет выводиться в случае ошибки. В частности, этот текст может задавать название считываемого из файла параметра (например, "имя узла графа"). Параметр eof_error_flag определяет, должна ли диагностироваться ошибка в случае, если выполняется попытка чтения строки после конца файла. Если параметр eof_error_flag равен 0, то при попытке чтения после конца файла функция просто вернет значение -1. Если же этот параметр имеет ненулевое значение, то в случае достижения конца файла будет вызвана функция вывода сообщения об ошибке, переданная в параметре error_func.

Функция предназначена для работы с текстовыми файлами. Если при чтении строки в файле был считан символ, который не может находиться в текстовом файле, вызывается функция вывода сообщения об ошибке, переданная в параметре error_func.

В переменную, на которую указывает параметр out_str, будет записана считанная строка. Строка дополняется нулевым байтом. Пробельные символы (включая \n) из конца строки не удаляются. Память для содержимого строки выделяется на куче с помощью функций xmalloc и xrealloc.

Если при чтении произошла ошибка ввода, программа завершается, и диагностируется внутренняя ошибка проверки. Для этого используется функция fatal_CF.

Функция возвращает длину считанной строки, либо значение -1, если был достигнут конец файла, и параметр eof_error_flag равен 0.