1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209
|
.\" Copyright 2005 walter harms (walter.harms@informatik.uni-oldenburg.de),
.\" and Copyright 2005 Michael Kerrisk <mtk.manpages@gmail.com>
.\" Distributed under the GPL.
.\"
.\" Japanese Version Copyright (c) 2005, 2006 Akihiro MOTOKI
.\" all rights reserved.
.\" Translated 2005-12-26, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
.\" Updated 2006-01-20, Akihiro MOTOKI
.\" Updated 2006-07-20, Akihiro MOTOKI
.\"
.TH FMEMOPEN 3 2005-12-08 "GNU" "Linux Programmer's Manual"
.SH ̾
fmemopen, open_memstream \- ȥȤƥץ
.SH
.B #define _GNU_SOURCE
.br
.B #include <stdio.h>
.sp
.BI "FILE *fmemopen(void *"buf ", size_t "size ","
.BI "const char *" mode ");"
.sp
.BI "FILE *open_memstream(char **" ptr ", size_t *" sizeloc );
.SH
.BR fmemopen ()
ؿϡȥץΥȥ
.I mode
ǻꤵ줿Ĥꤹ롣
Υȥϡ
.I buf
ǻꤵ줿ʸĤޤХåեȤɤ߽Ǥ롣
ΥХåեϾʤȤ
.I size
ХȤĹǤʤФʤʤ
.PP
.I mode
.BR fopen (3)
ξƱǤ롣
.I mode
ɵ⡼ (append mode) ꤵ줿硢ե֤νͤ
Хåեκǽ NULL Х ('\\0') ΰ֤ꤵ롣
ʳξϡե֤νͤϥХåեƬˤʤ롣
.PP
Ѥ˥ץ줿ȥեå
.RB ( fflush (3))
䥯
.RB ( fclose (3))
ˡ
(Хåե˶) NULL ХȤХåե˽ޤ롣
Τ褦ˤ뤿ˤϡƤӽФ
Хåե 1Х;͵
.RI ( size
ˤ 1ХȤޤͤꤹ) ɬפ롣
Хåե
.I size
ХȤꤿ⤦Ȥˤϡ顼Ȥʤ롣
(ǥեȤǤϡΤ褦ʥ顼
.I stdio
Хåեեå夵줿ˤʤ
.I setbuf(fp,\ NULL)
ȤäƥХåե̵ˤˡϡ
ԤäȤ˥顼ФΤΩġ
̤ˡȤƤϡ
.IR "setbuffer(fp, buf, size)"
ȤäơƤӽФ¦Ū
stdio ȥХåեȤ
.I buf
ꤷХåեλ˥ХåեΥ
stdio ˶ˡ롣)
.\" See http://sourceware.org/bugzilla/show_bug.cgi?id=1995
.\" and
.\" http://sources.redhat.com/ml/libc-alpha/2006-04/msg00064.html
.PP
ɤ߽ФѤ˥ץ줿ȥǤϡ
Хåե NULL Х ('\\0') äƤ
ɤ߽Фե (end-of-file) ֤ȤϤʤ
Хåեɤ߽Фǥե֤Τϡ
եݥХåեƬ
.I size
ХȤۤ˿ʤ⤦ȤǤ롣
.PP
.I buf
NULL ꤵ줿硢
.BR fmemopen ()
ưŪ
.I size
ХȤĹΥХåեݤ롣
ˡϡХåե˥ǡνߤԤäƤ顢
Ƥɤ߽Ф褦ʥץꥱͭѤǤ롣
ΥХåեϥȥबȤ˼ưŪ˲롣
ƤӽФϤδؿƤХåեؤΥݥͤ
Τˡ¸ߤʤ (
.BR open_memstream ()
⻲)
.BR open_memstream ()
ϡХåեؤνѤ˥ȥץ롣
Хåե
.RB ( malloc (3)
Ȥä) ưŪ˳Ƥ졢ɬפ˱ƼưŪ˿Ĺ롣
ȥǡɤ߽ФϤΥХåե
.BR free (3)
٤Ǥ롣
Υȥब
.RB ( fclose (3))
줿եå
.RB ( fflush (3))
줿ˡ
.I ptr
.I sizeloc
ͤϤ줾ХåեؤΥݥȤΥ˹롣
ͤϡƤӽФΥȥ˿ʽߤ
Ԥʤ˸¤ͭǤ롣
ȥ˽ߤԤäݤˤϡѿȤ
ȥ٥եå夷ʤФʤʤ
Хåե NULL ХȤݻ롣
NULL ХȤ
.I sizeloc
˳Ǽ륵ˤϡִޤޤʤס
.\"
.\" FIXME . glibc info ˤϰʲΤ褦ʵҤ뤬ʤ褦:
.\" http://sourceware.org/bugzilla/show_bug.cgi?id=1996
.\" ȥΥե֤
.\" .BR fseek (3)
.\" or
.\" .BR fseeko (3)
.\" ѹǤ롣
.\" Ǥ˥ǡޤ줿ΰ˥ե֤
.\" ưȡδ֤ΰ 0 롣
.SH ֤
ƽλˤϡ
.BR fmemopen ()
.BR open_memstream ()
.I FILE
ݥ֤
Ԥϡ NULL ֤ѿ
.I errno
˥顼ͤåȤ롣
.SH
δؿ GNU ĥǤ롣
.\" Jan 06: POSIX/PASC/IEEE ˤɸಽԤ褦Ǥ롣
.SH
Υץ
.BR fmemopen ()
ȤäƽϥХåեץ
.BR open_memstream ()
ȤäưŪ˥ѲϥХåեץƤ롣
(ץ쥳ޥɥ饤ä) ʸ
ɤ߹ߡϥХåե˽Ф
Υץμ¹ϰʲΤ褦ˤʤ롣
.nf
$ ./a.out "1 23 43"
size=11; ptr=1 529 1849
#define _GNU_SOURCE
#include <assert.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define handle_error(msg) \\
do { perror(msg); exit(EXIT_FAILURE); } while (0)
int
main(int argc, char *argv[])
{
FILE *out, *in;
int v, s;
size_t size;
char *ptr;
assert(argc == 2);
in = fmemopen(argv[1], strlen(argv[1]), "r");
if (in == NULL)
handle_error("fmemopen");
out = open_memstream(&ptr, &size);
if (out == NULL)
handle_error("fmemopen");
for (;;) {
s = fscanf(in, "%d", &v);
if (s <= 0)
break;
s = fprintf(out, "%d ", v * v);
if (s == \-1)
handle_error("fprintf");
}
fclose(in);
fclose(out);
printf("size=%ld; ptr=%s\\n", (long) size, ptr);
free(ptr);
exit(EXIT_SUCCESS);
}
.fi
.SH Ϣ
.BR fopen (3),
.BR feature_test_macros (7)
|