| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 443 人关注过本帖
标题:文件复制新问题~
只看楼主 加入收藏
human84
Rank: 3Rank: 3
来 自:哈尔滨 / 重庆
等 级:论坛游侠
帖 子:154
专家分:141
注 册:2009-11-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
文件复制新问题~
想实现dos下文件复制。为什么复制文档正确,像图片之类的东西复制后的就无法打开啊?想复制任何文件应该怎么写啊?(不用FileCopy()函数...)
#include"stdio.h"
main(int argc,char *argv[])
{
    FILE *in,*out;
    char ch;
    if(argc!=3)
    {
        printf("error!\n");
        exit(1);
    }
    if((in=fopen(argv[1],"r"))==NULL)
    {
        printf("can't open %s.\n",argv[1]);
        exit(1);
    }
    if((out=fopen(argv[2],"w"))==NULL)
    {
        printf("can't open %s.\n",argv[2]);
        exit(1);
    }
    ch=fgetc(in);
    while(!feof(in))
    {
        fputc(ch,out);
        ch=fgetc(in);
    }
    fclose(in);
    fclose(out);
}
搜索更多相关主题的帖子: 文件 
2010-02-07 00:42
awa2004
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:29
专家分:100
注 册:2009-9-10
收藏
得分:20 
把if((in=fopen(argv[1],"r"))==NULL)
这里的"r"改成"rb"
if((out=fopen(argv[2],"w"))==NULL)
这里的"w"改成"wb"
试一下吧,因为"r"是打开文本文件,"w"是写入文本文件
其实你如果是复制整个文件的话
直接把这段
ch=fgetc(in);
    while(!feof(in))
    {
        fputc(ch,out);
        ch=fgetc(in);
    }
    fclose(in);
    fclose(out);
改成
fseek(if,0,2);
ch=ftell(if);
buf=malloc(ch);
memset(buf,0,ch);
fseek(if,0,0);
fread(buf,ch,1,if);
fwrite(buf,ch,1,out);
free(buf)
fcloseall();
前面加个char *buf
把ch的类型改成long


[ 本帖最后由 awa2004 于 2010-2-7 01:05 编辑 ]
2010-02-07 00:47
human84
Rank: 3Rank: 3
来 自:哈尔滨 / 重庆
等 级:论坛游侠
帖 子:154
专家分:141
注 册:2009-11-1
收藏
得分:0 
哦,好使了~多谢
2010-02-08 09:48
快速回复:文件复制新问题~
数据加载中...
 
   



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

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