.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 1990, 1991 The Regents of the University of California. .\" and Copyright (c) 2020 Arkadiusz Drabczyk .\" All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" Chris Torek and the American National Standards Committee X3, .\" on Information Processing Systems. .\" .\" SPDX-License-Identifier: BSD-4-Clause-UC .\" .\" @(#)fread.3 6.6 (Berkeley) 6/29/91 .\" .\" Converted for Linux, Mon Nov 29 15:37:33 1993, faith@cs.unc.edu .\" Sun Feb 19 21:26:54 1995 by faith, return values .\" Modified Thu Apr 20 20:43:53 1995 by Jim Van Zandt .\" Modified Fri May 17 10:21:51 1996 by Martin Schulze .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH fread 3 "15 июня 2024 г." "Справочные страницы Linux 6.9.1" .SH ИМЯ fread, fwrite \- ввод/вывод из двоичного потока .SH БИБЛИОТЕКА Стандартная библиотека языка C (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .P \fBsize_t fread(void \fP\fIptr\fP\fB[restrict .\fP\fIsize\fP\fB * .\fP\fInmemb\fP\fB],\fP \fB size_t \fP\fIsize\fP\fB, size_t \fP\fInmemb\fP\fB,\fP \fB FILE *restrict \fP\fIstream\fP\fB);\fP \fBsize_t fwrite(const void \fP\fIptr\fP\fB[restrict .\fP\fIsize\fP\fB * .\fP\fInmemb\fP\fB],\fP \fB size_t \fP\fIsize\fP\fB, size_t \fP\fInmemb\fP\fB,\fP \fB FILE *restrict \fP\fIstream\fP\fB);\fP .fi .SH ОПИСАНИЕ Функция \fBfread\fP() считывает \fInmemb\fP единиц данных (размер каждого \fIsize\fP байт) из потока, на который указывает \fIstream\fP, и сохраняет их в расположение, на которое указывает \fIptr\fP. .P Функция \fBfwrite\fP() записывает \fInmemb\fP единиц данных (размер каждого \fIsize\fP байт) в поток, на который указывает \fIstream\fP, получая их из расположения, на которое указывает \fIptr\fP. .P Для неблокирующих аналогов, см. \fBunlocked_stdio\fP(3). .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" При успешном выполнении функции \fBfread\fP() и \fBfwrite\fP() возвращают количество считанных или записанных единиц. Это количество равно количеству переданных байт только, если значение \fIsize\fP равно 1. В случае ошибки или по достижении конца файла возвращается меньшее количество единиц (или ноль). .P The file position indicator for the stream is advanced by the number of bytes successfully read or written. .P Функция \fBfread\fP() не отличает возникновение ошибки и достижения конца файла; для точного определения необходимо вызывать функции \fBfeof\fP(3) и \fBferror\fP(3). .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Интерфейс Атрибут Значение T{ .na .nh \fBfread\fP(), \fBfwrite\fP() T} Безвредность в нитях MT\-Safe .TE .SH СТАНДАРТЫ C11, POSIX.1\-2008. .SH ИСТОРИЯ POSIX.1\-2001, C89. .SH ПРИМЕРЫ The program below demonstrates the use of \fBfread\fP() by parsing /bin/sh ELF executable in binary mode and printing its magic and class: .P .in +4n .EX $ \fB./a.out\fP ELF magic: 0x7f454c46 Class: 0x02 .EE .in .SS "Исходный код программы" .\" SRC BEGIN (fread.c) \& .EX #include #include \& #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) \& int main(void) { FILE *fp; size_t ret; unsigned char buffer[4]; \& fp = fopen("/bin/sh", "rb"); if (!fp) { perror("fopen"); return EXIT_FAILURE; } \& ret = fread(buffer, sizeof(*buffer), ARRAY_SIZE(buffer), fp); if (ret != ARRAY_SIZE(buffer)) { fprintf(stderr, "fread() failed: %zu\[rs]n", ret); exit(EXIT_FAILURE); } \& printf("ELF magic: %#04x%02x%02x%02x\[rs]n", buffer[0], buffer[1], buffer[2], buffer[3]); \& ret = fread(buffer, 1, 1, fp); if (ret != 1) { fprintf(stderr, "fread() failed: %zu\[rs]n", ret); exit(EXIT_FAILURE); } \& printf("Class: %#04x\[rs]n", buffer[0]); \& fclose(fp); \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "СМОТРИТЕ ТАКЖЕ" \fBread\fP(2), \fBwrite\fP(2), \fBfeof\fP(3), \fBferror\fP(3), \fBunlocked_stdio\fP(3) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства разработал(и) Azamat Hackimov , Dmitry Bolkhovskikh , Yuri Kozlov и Иван Павлов . .PP Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу .MT списка рассылки русских переводчиков .ME .