Difference between revisions of "Libchecker:checker read file by line ex"

From EjudgeWiki
(Created page with 'Навигация: Главная страница/Система ejudge/Проверяющие программы/libchecker/[[Libchecker:Функци…')
 
 
Line 16: Line 16:
 
Эта переменная представляет из себя массив указателей на строки, всего в массиве элементов на 1 больше, чем строк в файле, и последний элемент массива всегда равен NULL. Каждая строка завершается нулевым байтом. Никаких других преобразований над входным файлом не выполняется. Пробелы и символы <tt>\n</tt> в конце текстовых строк входного файла сохраняются.
 
Эта переменная представляет из себя массив указателей на строки, всего в массиве элементов на 1 больше, чем строк в файле, и последний элемент массива всегда равен NULL. Каждая строка завершается нулевым байтом. Никаких других преобразований над входным файлом не выполняется. Пробелы и символы <tt>\n</tt> в конце текстовых строк входного файла сохраняются.
  
Функция не предназначена для работы с бинарными файлами. Если в файле встречается символ, который недопустим в текстовом файле, вызывается функция <tt>error_func<tt> для выдачи сообщения об ошибке. Функция должна завершить выполнение программы. Параметр <tt>name</tt> &mdash; это имя файла, которое используется в тексте сообщения об ошибке.
+
Функция не предназначена для работы с бинарными файлами. Если в файле встречается символ, который недопустим в текстовом файле, вызывается функция <tt>error_func</tt> для выдачи сообщения об ошибке. Функция должна завершить выполнение программы. Параметр <tt>name</tt> &mdash; это имя файла, которое используется в тексте сообщения об ошибке.
  
Память для содержимого файла выделяется на куче с помощью функций [[libchecker:xmalloc|xmalloc]], [[libchecker:xcalloc|xcalloc]] и [[libchecker:xrealloc|xrealloc]].
+
Память для содержимого файла выделяется на куче с помощью функций <tt>[[libchecker:xmalloc|xmalloc]]</tt>, <tt>[[libchecker:xcalloc|xcalloc]]</tt> и <tt>[[libchecker:xrealloc|xrealloc]]</tt>.
  
Функция не возвращает никакого значения. Если при чтении произошла ошибка ввода, программа завершается, и диагностируется [[внутренняя ошибка проверки]].
+
Функция не возвращает никакого значения. Если при чтении произошла ошибка ввода, программа завершается, и диагностируется [[внутренняя ошибка проверки]]. Для этого используется функция <tt>[[libchecker:fatal_CF|fatal_CF]]</tt>.

Latest revision as of 19:48, 4 July 2010

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

Функция checker_read_file_by_line_ex — построчное чтение текстового файла в память.

void
checker_read_file_by_line_ex(
        FILE *f,
        checker_error_func_t error_func,
        const char *name,
        char ***out_lines,
        size_t *out_lines_num);

Функция считывает содержимое текстового файла f в память. В переменную, на которую указывает out_lines_num, будет записано число строк в считанном файле. В переменную, на которую указывает out_lines, будут записаны считанные строки текста. Эта переменная представляет из себя массив указателей на строки, всего в массиве элементов на 1 больше, чем строк в файле, и последний элемент массива всегда равен NULL. Каждая строка завершается нулевым байтом. Никаких других преобразований над входным файлом не выполняется. Пробелы и символы \n в конце текстовых строк входного файла сохраняются.

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

Память для содержимого файла выделяется на куче с помощью функций xmalloc, xcalloc и xrealloc.

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