| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 363 人关注过本帖
标题:文件操作 复制文件总是多个字
只看楼主 加入收藏
Dream_weaver
Rank: 1
等 级:新手上路
帖 子:37
专家分:2
注 册:2012-6-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
文件操作 复制文件总是多个字
文件的复制操作,运行无误。
但是生成的文件中,bbb_cp的最后,总会多一个“烫?” 或者“烫”,这是为什么呢?

#include<stdio.h>
#include<stdlib.h> //exit
#include<string.h> //bzero
#define BUFFER_SIZE 1024
int main(void)
{
    FILE *from_fp,*to_fp;
    int len_from;
    char buffer[1024];

    if((from_fp=fopen("d:\\aaa.txt","r"))==NULL)
    {
        printf("open failure of from_fp.\n");
        exit(1);
    }

    if((to_fp=fopen("d:\\bbb_cp.txt","w"))==NULL)
    {
        printf("open failure of to_fp\n");
        exit(1);
    }
     fseek(from_fp,0L,SEEK_END);
     len_from=ftell(from_fp);
     fseek(from_fp,0L,SEEK_SET);
     printf("from file size is %d bytes\n",len_from);

     while(!feof(from_fp))
     {
         fread(buffer,BUFFER_SIZE,1,from_fp);
             if(len_from<BUFFER_SIZE)
                 fwrite(buffer,len_from,1,to_fp);
             else
             {
                  fwrite(buffer,BUFFER_SIZE,1,to_fp);
                  len_from-=BUFFER_SIZE;
             }
             memset(buffer,0,BUFFER_SIZE); //清空进行下一次读
     }

     fclose(from_fp);
     fclose(to_fp);
     return 0;
}
搜索更多相关主题的帖子: include failure 
2012-12-18 10:59
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:7 
看到 while(!feof(from_fp)) 这种代码,就可以断定属于对feof的错误理解
2012-12-18 11:02
Dream_weaver
Rank: 1
等 级:新手上路
帖 子:37
专家分:2
注 册:2012-6-8
收藏
得分:0 
问题我已经找出来了 两个文件的打开方式都要是二进制的
即"rb"  "wb"
这样的话结果就没有异常
但是为什么呢?
如果以二进制读写的话,原本不是二进制的文件也能打开?并且写入的不是0101这样的二进制?
问题有点弱,请见谅。
2012-12-18 11:07
Dream_weaver
Rank: 1
等 级:新手上路
帖 子:37
专家分:2
注 册:2012-6-8
收藏
得分:0 
回复 2楼 rjsp
没有呀
我看到资料里,都是这样操作的 没有错误
并且feof也能用于文本文件的操作,不是吗?
2012-12-18 11:12
jk_love
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:196
专家分:965
注 册:2012-10-22
收藏
得分:7 

试了下LInux上正常,机器识别的都是2进制
2012-12-18 11:18
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
以下是引用Dream_weaver在2012-12-18 11:12:32的发言:

我看到资料里,都是这样操作的 没有错误
我一直认为,烂货出来教学或写书是一种极度不道德行为,应当被枪毙
2012-12-18 12:14
轮椅之星
Rank: 2
等 级:论坛游民
帖 子:18
专家分:42
注 册:2012-8-16
收藏
得分:7 
回复 4楼 Dream_weaver
循环结束之前的一次 复制 操作,将EOF字符也复制了到了目的文件里面,  然后判断fp 是否等于EOF。如果 EOF == fp, 则跳出循环。  feof 函数是先读取内容, 依靠所读取的内容 判断文件是否结束。
2012-12-18 12:23
快速回复:文件操作 复制文件总是多个字
数据加载中...
 
   



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

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