赞助连接

赞助连接

阅 读 文 章

请教有关fwrite函数的使用问题

[来源:网上转载 (http://bbs.chinaunix.net) | 作者:网友(网络转载) | 时间:2008-06-14 | 浏览:人次 ]

fwrite的定义是:  fwrite(buffer,size,count,fp);

   (1)buffer:是一个指针,对fwrite来说,是要输出数据的地址。

  (2)size:要写的字节数;

  (3)count:要进行写多少个size字节的数据项;

  (4)fp:文件型指针。

我有个问题:如果使用fwrite将buffer中的数据写进一个文件1.txt,buffer中的数据大小为17字节,size为5字节,count为4,这样可将buffer中的数据全部写进1.txt中,那么它的返回值是多少?也就是每次写5字节,调用一次fwrite函数能写4次,最后一次并不能写满5个字节。
我不知道我的问题说明白了没有,也就是设size=5,count=4,那么当buffer=17字节与buffer=20字节的情况下的返回值是否相同?


why not test it yourself?


我试过了,其实不管怎样,它返回值总是等于count的,也就是如果字符数组大小是17的话,那么就除了将该字符数组写进文件,还将它后面的3了字符也写进文件。


其实我真正想问的是如果一个未知大小的文件1.txt,我怎么用fread将它中的数据读进buffer中,然后再用fwrite将buffer中的数据写进2.txt,这样完成了文件拷贝,读写函数中的size和count怎么设置,怎样才能判断fread将文件1.txt全写进buffer中?


其实我有个一直没有看到解释的疑问,就是为什么用size和count同时来控制呢?为啥不直接用size呢?


再具体一些吧,我要将一个图片文件1.jpg进行拷贝,用fwrite和fread怎么实现啊?也就是其中的size和count怎么分配,还有怎么判断读到文件尾了?我自己编写了很简陋的程序:1.jpg文件很小,不到200字节,有哪个高手帮我改进一下。

#include<stdlib.h>
#include<stdio.h>
#include<iostream.h>
#include<string.h>

void main()
{
        char buffer[1024]="";
        FILE *fp1;
        FILE *fp2;
        if((fp1=fopen("1.gif","r"))==NULL)
        {
                printf("cannot open file1\n");
                exit(0);
        }
        int nr=fread(buffer,1,1024,fp1);
                printf("%d\n",nr);
        if((fp2=fopen("2.gif","w+"))==NULL)
        {
                printf("cannot open file2\n");
                exit(0);
        }
        int nw=fwrite(buffer,1,1024,fp2);
        fclose(fp1);
                fclose(fp2);
        return;
}


while ((nr = fread(buffer, 1024, 1, fp1)) == 1)
    if (1 == nr)
fwrite(buffer, 1024, 1, fp2);
TAG标签 : 使用 问题 函数 有关 请教 buffer 文件 字节 fwrite 数据

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表
网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.