.\" -*- 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 "15 июня 2024 г." "Справочные страницы Linux 6.9.1" .SH ИМЯ getline, getdelim \- разделяет входные данные на строки .SH БИБЛИОТЕКА Стандартная библиотека языка C (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .P \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 .P .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .P \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 и включает символ новой строки, если был найден разделитель для новой строки. .P 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. .P Как альтернатива, перед вызовом \fBgetline\fP(), \fI*lineptr\fP может содержать указатель на буфер, выделенный с помощью \fBmalloc\fP(3) размером \fI*n\fP байтов. Если буфер недостаточно велик для размещения строки, то \fBgetline\fP() изменяет размер буфера с помощью \fBrealloc\fP(3), обновляя \fI*lineptr\fP и \fI*n\fP при необходимости. .P В любом случае при успешном выполнении вызова \fI*lineptr\fP и \fI*n\fP будут содержать правильный адрес буфера и его размер, соответственно. .P Функция \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]\[rs]0\[aq]). This value can be used to handle embedded null bytes in the line read. .P 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. .P 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). .TS allbox; lbx lb lb l l l. Интерфейс Атрибут Значение T{ .na .nh \fBgetline\fP(), \fBgetdelim\fP() T} Безвредность в нитях MT\-Safe .TE .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ 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, "Usage: %s \[rs]n", 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:\[rs]n", 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 Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу .MT списка рассылки русских переводчиков .ME .