Libchecker:checker read line

From EjudgeWiki

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

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

int checker_read_line(int ind, const char *name, int eof_error_flag, char **out_str);

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

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

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

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