函数原型:FILE *fmemopen(void *restrict buf, size_t size, const char *restrict type)
一、源代码:
1 #include "apue.h"
2 #define SIZ 48
3
4 int main()
5 {
6 char buf[SIZ];
7 FILE *fp;
8
9 memset(buf,'a',SIZ-2);
10 buf[SIZ-2] = '\0';
11 buf[SIZ-1] = 'X';
12 if((fp = fmemopen(buf, SIZ, "w+")) == NULL)
13 err_sys("fmemopen error");
14 printf("initial buffer contents:%s\n",buf);
15 fprintf(fp,"hello world");
16 printf("before fflush buffer contents:%s\n",buf);
17 fflush(fp);
18 printf("after fflush buffer contents:%s\n",buf);
19 printf("The length of buffer is:%ld\n",(long)strlen(buf));
20
21 memset(buf,'b',SIZ - 2);
22 buf[SIZ - 2] = '\0';
23 buf[SIZ - 1] = 'X';
24 fprintf(fp,"hello world");
25 fseek(fp, 0, SEEK_SET);
26 printf("after fseek buffer contents:%s\n",buf);
27 printf("The length of buffer is:%ld\n",(long)strlen(buf));
28
29 memset(buf,'c', SIZ - 2);
30 buf[SIZ - 2] = '\0';
31 buf[SIZ - 1] = 'X';
32 fprintf(fp, "hello world");
33 fclose(fp);
34 printf("after fclose buffer contents:%s\n",buf);
35 printf("The length of buffer is:%ld\n",(long)strlen(buf));
36
37 exit(0);
38 }
~
~
二、运行结果:
initial buffer contents:
before fflush buffer contents:
after fflush buffer contents:hello world
The length of buffer is:11
after fseek buffer contents:bbbbbbbbbbbhello world
The length of buffer is:22
after fclose buffer contents:hello worldccccccccccccccccccccccccccccccccccc
The length of buffer is:46