.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 2001 John Levon .\" Based in part on GNU libc documentation .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getline 3 "5 февраля 2023 г." "Linux man\-pages 6.03" .SH ИМЯ getline, getdelim \- разделяет входные данные на строки .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .PP \fBssize_t getline(char **restrict \fP\fIlineptr\fP\fB, size_t *restrict \fP\fIn\fP\fB,\fP \fB FILE *restrict \fP\fIstream\fP\fB);\fP \fBssize_t getdelim(char **restrict \fP\fIlineptr\fP\fB, size_t *restrict \fP\fIn\fP\fB,\fP \fB int \fP\fIdelim\fP\fB, FILE *restrict \fP\fIstream\fP\fB);\fP .fi .PP .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .PP \fBgetline\fP(), \fBgetdelim\fP(): .nf Начиная с glibc 2.10: _POSIX_C_SOURCE >= 200809L До glibc 2.10: _BSD_SOURCE .fi .SH ОПИСАНИЕ Функция \fBgetline\fP() считывает целую строку из \fIstream\fP, сохраняет адрес буфера с текстом в \fI*lineptr\fP. Буфер завершается null и включает символ новой строки, если был найден разделитель для новой строки. .PP If \fI*lineptr\fP is set to NULL before the call, then \fBgetline\fP() will allocate a buffer for storing the line. This buffer should be freed by the user program even if \fBgetline\fP() failed. .PP Как альтернатива, перед вызовом \fBgetline\fP(), \fI*lineptr\fP может содержать указатель на буфер, выделенный с помощью \fBmalloc\fP(3) размером \fI*n\fP байтов. Если буфер недостаточно велик для размещения строки, то \fBgetline\fP() изменяет размер буфера с помощью \fBrealloc\fP(3), обновляя \fI*lineptr\fP и \fI*n\fP при необходимости. .PP В любом случае при успешном выполнении вызова \fI*lineptr\fP и \fI*n\fP будут содержать правильный адрес буфера и его размер, соответственно. .PP Функция \fBgetdelim\fP() работает аналогично \fBgetline\fP(), за исключением того, что в аргументе \fIdelimiter\fP можно задать разделитель строки, отличный от символа новой строки. Как и с \fBgetline\fP(), символ\-разделитель не добавляется, если его было в входных данных до конца файла. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" On success, \fBgetline\fP() and \fBgetdelim\fP() return the number of characters read, including the delimiter character, but not including the terminating null byte (\[aq]\e0\[aq]). This value can be used to handle embedded null bytes in the line read. .PP Both functions return \-1 on failure to read a line (including end\-of\-file condition). In the event of a failure, \fIerrno\fP is set to indicate the error. .PP If \fI*lineptr\fP was set to NULL before the call, then the buffer should be freed by the user program even on failure. .SH ОШИБКИ .TP \fBEINVAL\fP Некорректные параметры (\fIn\fP или \fIlineptr\fP равно NULL или неправильное значение \fIstream\fP). .TP \fBENOMEM\fP Не удалось выделить или переместить строчный буфер. .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .ad l .nh .TS allbox; lbx lb lb l l l. Интерфейс Атрибут Значение T{ \fBgetline\fP(), \fBgetdelim\fP() T} Безвредность в нитях MT\-Safe .TE .hy .ad .sp 1 .SH СТАНДАРТЫ Изначально, функции \fBgetline\fP() и \fBgetdelim\fP() были расширениями GNU. Позднее они были стандартизированы в POSIX.1\-2008. .SH ПРИМЕРЫ .\" SRC BEGIN (getline.c) .EX #define _GNU_SOURCE #include #include int main(int argc, char *argv[]) { FILE *stream; char *line = NULL; size_t len = 0; ssize_t nread; if (argc != 2) { fprintf(stderr, "Использование: %s <файл>\en", argv[0]); exit(EXIT_FAILURE); } stream = fopen(argv[1], "r"); if (stream == NULL) { perror("fopen"); exit(EXIT_FAILURE); } while ((nread = getline(&line, &len, stream)) != \-1) { printf("Retrieved line of length %zd:\en", nread); fwrite(line, nread, 1, stdout); } free(line); fclose(stream); exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "СМ. ТАКЖЕ" \fBread\fP(2), \fBfgets\fP(3), \fBfopen\fP(3), \fBfread\fP(3), \fBscanf\fP(3) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Azamat Hackimov , Dmitry Bolkhovskikh , Vladislav , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .