免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: liyi
打印 上一主题 下一主题

[函数] 求助:一个函数输出到磁盘文件。如何将它的输出直接写到内存里? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2003-01-25 12:48 |只看该作者

求助:一个函数输出到磁盘文件。如何将它的输出直接写到内存里?

试试这个方法:
  #include "stdio.h"
main()
{
FILE *f1;
char buff[1024];


f1=fopen("aaa","w");
setbuf(f1,buff);
fprintf(f1,"abcdefghijklmnopqrstuvwxyZ fdlj53u...");
printf("%s\n",buff);
fclose(f1);
}

关键是 setbuf(); 重新指定文件的缓冲区。
在我的电脑上这个程序buff 中可以得到你需要的结果。

论坛徽章:
0
12 [报告]
发表于 2003-01-25 12:51 |只看该作者

求助:一个函数输出到磁盘文件。如何将它的输出直接写到内存里?

原帖由 "fdlj53u" 发表:
试试这个方法:
  #include "stdio.h"
main()
{
FILE *f1;
char buff[1024];


f1=fopen("aaa","w";
setbuf(f1,buff);
fprintf(f1,"abcdefghijklmnopqrstuvwxyZ fdlj53u...";
printf("%s\n",buff);
fclose(f1);
}

关键是 setbuf(); 重新指定文件的缓冲区。
在我的电脑上这个程序buff 中可以得到你需要的结果。
以下是setbuf 函数的man 页



          SETBUF(3S)          (C Programming Language Utilities)         SETBUF(3S)



          NAME
               setbuf, setvbuf - assign        buffering to a stream

          SYNOPSIS
               #include        <stdio.h>;

               void setbuf (stream, buf)
               FILE *stream;
               char *buf;

               int setvbuf (stream, buf, type, size)
               FILE *stream;
               char *buf;
               int type, size;

          DESCRIPTION
               setbuf may be used after        a stream has been opened but before
               it is read or written.  It causes the array pointed to by
               buf to be used instead of an automatically allocated buffer.
               If buf is the NULL pointer input/output will be completely
               unbuffered.

               A constant BUFSIZ, defined in the <stdio.h>; header file,
               tells how big an        array is needed:

                    char buf[BUFSIZ];

               setvbuf may be used after a stream has been opened but
               before it is read or written.  type determines how stream
               will be buffered.  Legal        values for type        (defined in
               stdio.h)        are:

               _IOFBF  causes input/output to be fully buffered.

               _IOLBF  causes output to        be line        buffered; the buffer will
                       be flushed when a newline is written, the buffer        is
                       full, or        input is requested.

               _IONBF  causes input/output to be completely unbuffered.

               If buf is not the NULL pointer, the array it points to will
               be used for buffering, instead of an automatically allocated
               buffer.        size specifies the size        of the buffer to be used.
               The constant BUFSIZ in <stdio.h>;        is suggested as        a good
               buffer size.  If        input/output is        unbuffered, buf        and size
               are ignored.

               By default, output to a terminal        is line        buffered and all
               other input/output is fully buffered.

          SEE ALSO
               fopen(3S), getc(3S), malloc(3C),        putc(3S), stdio(3S)



          Page 1                                          (printed 9/22/93)






          SETBUF(3S)          (C Programming Language Utilities)         SETBUF(3S)



          DIAGNOSTICS
               If an illegal value for type or size is provided, setvbuf
               returns a non-zero value.  Otherwise, the value returned
               will be zero.

          NOTES
               A common        source of error        is allocating buffer space as an
               ``automatic'' variable in a code        block, and then        failing        to
               close the stream        in the same block.














































          Page 2                                          (printed 9/22/93)
liyi 该用户已被删除
13 [报告]
发表于 2003-01-27 12:04 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
14 [报告]
发表于 2003-01-27 12:24 |只看该作者

求助:一个函数输出到磁盘文件。如何将它的输出直接写到内存里?

那对于你那上M的输出还是无法满足要求?但是实在没有比这种方法更简单,更方便的方法了。希望你能找到其他的方法,到时候告诉一声。
liyi 该用户已被删除
15 [报告]
发表于 2003-01-27 13:18 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
16 [报告]
发表于 2003-01-27 18:49 |只看该作者

求助:一个函数输出到磁盘文件。如何将它的输出直接写到内存里?

不能借助磁盘文件。
???
liyi 该用户已被删除
17 [报告]
发表于 2003-01-28 00:15 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP