| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1960 人关注过本帖
标题:[求助]用c程序复制*.exe
只看楼主 加入收藏
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
区别大的很,漫漫你就知道了,把我写的哪个看懂就可以了

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-02 00:53
momo_2003
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-5-2
收藏
得分:0 
我看了半天觉得就是文件的打开方式不一样,有其他不同之处吗?
2006-05-02 01:05
momo_2003
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-5-2
收藏
得分:0 
我是说用这个代码的时候:
while((ch=fget(fp1))!=EOF)
{
fputc(ch,fp2);
}
2006-05-02 01:07
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
fget

自己查查函数,有你这个吗

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-02 01:11
momo_2003
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-5-2
收藏
得分:0 
呵呵,手误,不好意思啊!
2006-05-02 01:14
momo_2003
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-5-2
收藏
得分:0 
我的代码while((cha=fgetc(fpa))!=EOF)
{
fputc(cha,fpb);
}
和你的代码
cha = fgetc(fpa);
while (!feof(fpa))
{
fputc(cha, fpb);
cha = fgetc(fpa);
}
有什么不同吗?
我的就不能用而你的就正常运行~~~
2006-05-02 01:20
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
回复:(momo_2003)我的代码while((cha=fgetc(fpa))!...
以下是引用momo_2003在2006-5-2 1:20:00的发言:
我的代码while((cha=fgetc(fpa))!=EOF)
{
fputc(cha,fpb);
}
和你的代码
cha = fgetc(fpa);
while (!feof(fpa))
{
fputc(cha, fpb);
cha = fgetc(fpa);
}
有什么不同吗?
我的就不能用而你的就正常运行~~~

//别争啦,与编译器有点关系呢。
//下面我给出兼容性较好的代码:

//前提:文件指针fp1,fp2已建立
//要求把fp1中的一切复制到fp2
while(1) // 1,2,3的1
{
char one=fgetc(fp1);
if( feof(fp1) )break;
fputc(one,fp2);
}
fclose(fp1); //这个语句忘打没事
fclose(fp2); //这个语句比上一个重要


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-02 05:45
momo_2003
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-5-2
收藏
得分:0 
谢谢~~
2006-05-02 12:47
dyqq1234
Rank: 2
等 级:论坛游民
帖 子:21
专家分:10
注 册:2008-10-24
收藏
得分:0 
老兄 二进制文件已读入字节来写入 与文本文件不同 它是读入字符来写入的 而你所用的fgetc的话会比原来的文件要短
2008-11-22 23:17
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
其实是这样的:feof在fgetc读取最后一个字符的时候,是认为没有到达文件末尾的。非要再读取一个字符,等到读取失败的时候才会设置“到文件末尾”的标志。所以最好的办法是这样的:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int ch;
    FILE *fp;
    fp = fopen("a.out", "w");
    fputs("123", fp);
    fclose(fp);
    fp = fopen("a.out", "r");
    while ((ch = fgetc(fp)) != EOF)
        printf("%d\n", ch);
    fclose(fp);
    return 0;
}

建议采用缓冲区,一次读一块。这样快。

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-11-22 23:28
快速回复:[求助]用c程序复制*.exe
数据加载中...
 
   



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

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