| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3714 人关注过本帖
标题:试程序出现很多“屯屯屯屯屯”
只看楼主 加入收藏
SaberLion
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:85
专家分:348
注 册:2014-1-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
试程序出现很多“屯屯屯屯屯”
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 30
void copy(FILE * fp1,FILE * fp2);
int main(void)
{
    char rce_file[MAX],tar_file[MAX];                  //  储存源文件和目标文件的文件名
    FILE * fp1,* fp2;                                                 //  两个文件指针
    char ch;

    printf("input name of source file: ");
    gets(rce_file);
    strcat(rce_file,".txt");                                      //  打开的是文本文档
    printf("input name of target file: ");
    gets(tar_file);
    strcat(tar_file,".txt");
    if((fp1 = fopen(rce_file,"rb")) == NULL)       //  只读二进制模式
    {
        printf("can't open %s file",rce_file);
        exit(1);
    }
    if((fp2 = fopen(tar_file,"a+b")) == NULL)     //  读写二进制模式
    {
        printf("can't open %s file",tar_file);
        exit(2);
    }
    copy(fp1,fp2);                                                //  调试复制函数
    while((ch = getc(fp2)) != EOF)                     //  查看目标文件被复制的内容 (如果这段代码不写就不会出现“屯屯屯屯屯”)
        putc(ch,stdout);
    fclose(fp1);                                                   //  关闭文件
    fclose(fp2);
    system("pause");
    return 0;
}

void copy(FILE * fp1,FILE * fp2)
{
    char copy_s;

    while(EOF != (copy_s = fgetc(fp1)))
        fputc(copy_s,fp2);
}
搜索更多相关主题的帖子: 源文件 
2014-02-13 21:09
SaberLion
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:85
专家分:348
注 册:2014-1-4
收藏
得分:0 
晕 刚发完我就知道哪错了
只要在  
while((ch = getc(fp2)) != EOF) putc(ch,stdout);

后面加上rewind(fp2);  就好了
因为调用copy函数之后 fp2指向的是文件末尾
2014-02-13 21:13
SaberLion
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:85
专家分:348
注 册:2014-1-4
收藏
得分:0 
进来的给分吧~
2014-02-13 21:15
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
收藏
得分:20 
我先进来啦

想抽苏烟了。
2014-02-13 22:05
SaberLion
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:85
专家分:348
注 册:2014-1-4
收藏
得分:0 
回复 4楼 fl8962
都没人进来  都给你辣!
2014-02-14 09:38
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
收藏
得分:0 
回复 5楼 SaberLion
....yao bu wo kai ge tie zi, ye gei ni 20 fen?

想抽苏烟了。
2014-02-14 09:42
SaberLion
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:85
专家分:348
注 册:2014-1-4
收藏
得分:0 
回复 6楼 fl8962
  不用了
2014-02-14 09:45
yangt
Rank: 2
等 级:论坛游民
帖 子:49
专家分:20
注 册:2012-11-28
收藏
得分:0 
    if((fp1 = fopen(rce_file,"rb")) == NULL)       //  只读二进制模式
    {
        printf("can't open %s file",rce_file);
        exit(1);
    }
    if((fp2 = fopen(tar_file,"a+b")) == NULL)     //  读写二进制模式
    {
        printf("can't open %s file",tar_file);
        exit(2);
    }
    copy(fp1,fp2);                                                //  调试复制函数
    while((ch = getc(fp2)) != EOF)                     //  查看目标文件被复制的内容 (如果这段代码不写就不会出现“屯屯屯屯屯”)
        putc(ch,stdout);

楼主能解释一下这两个if 和 while 语句是什么意思吗?
2014-02-14 20:41
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
收藏
得分:0 
回复 8楼 yangt
百度吧,或自己看书

想抽苏烟了。
2014-02-14 23:09
怪叔叔
Rank: 4
来 自:陕西
等 级:业余侠客
威 望:1
帖 子:113
专家分:234
注 册:2013-9-22
收藏
得分:0 
2014-02-16 21:13
快速回复:试程序出现很多“屯屯屯屯屯”
数据加载中...
 
   



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

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