| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1608 人关注过本帖
标题:为什么不能合并文件?
只看楼主 加入收藏
zhangxf1989
Rank: 6Rank: 6
等 级:侠之大者
帖 子:96
专家分:419
注 册:2009-9-5
收藏
得分:0 
以r(只读)方式打开的文件只能读不能写,以w(只写)方式打开的文件会将原同名文件删除后新建一个文件,只有以a(追加)方式打开文件才能满足你的要求(刚才搞错了以a方式打开的文件本身的文件指针会被自动移动到文件尾的,不需要自己移动)。

以r、w、a方式打开的文件都可以用fseek(fp,0L,SEEK_END)这种方法来将文件指针移动到文件尾的。

如果不用这种方法我想还可以用文件大小来作为fseek()的偏移量的方法使文件指针移到文件尾,但是简单的方法不用为什么要用复杂的呢?
2009-12-31 17:13
keepc
Rank: 1
等 级:禁止访问
帖 子:61
专家分:9
注 册:2009-11-15
收藏
得分:0 
谢谢。
但是
void catFile(char *srcName,char *dstName)
{
    FILE    *fps = NULL;
    FILE    *fpd = NULL;
    int        ch;

    if((fps = fopen(srcName,"w")) == NULL)
    {
        printf("Can't open file %s\n",srcName);
        exit(1);

    }
    else
    {
        fseek(fps,0L,2);   //移到了最末尾还是不行啊?
    }
    if((fpd = fopen(dstName,"r")) == NULL)
    {
        printf("Can't open file %s\n",dstName);
        exit(1);
    }

    while( (ch = fgetc(fpd)) != EOF)
            fputc(ch,fps);

    fclose(fps);
    fclose(fpd);


}

     fseek(fps,0L,2);   //移到了最末尾还是不行啊?  是哪里出错呢?
2009-12-31 19:08
zhangxf1989
Rank: 6Rank: 6
等 级:侠之大者
帖 子:96
专家分:419
注 册:2009-9-5
收藏
得分:0 
  if((fps = fopen(srcName,"w")) == NULL)
我不是说了吗,用w方式打开的文件,原文件会被删除,然后再新建一个,所以fps文件中只会留下你后来写的东西,用a+方式打开,不用用fseek()将文件指针移动到文件尾!
2009-12-31 20:08
快速回复:为什么不能合并文件?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024643 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved