| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 441 人关注过本帖
标题:文件复制问题,做半天都是错的,球大婶解答
取消只看楼主 加入收藏
yupeisx
Rank: 1
等 级:新手上路
帖 子:20
专家分:8
注 册:2012-3-7
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:2 
文件复制问题,做半天都是错的,球大婶解答
程序虽然很挫,但是凑活能看,运行后  结果数组filename1【10】  中会莫名其秒的出现个不认识的字符
  然后我 只能球大神帮助了  谢谢
#include<stdio.h>
#include<stdlib.h>
void main()
{
    FILE *fp;
    FILE *fp1;
    char ch,filename[10];
    char choose;
    scanf("%c",&choose);
    if(choose=='r')
    {
        scanf("%s",filename);
        if((fp=fopen(filename,"rt"))==NULL)
        {
            printf("cannot open this file\n");
            exit(0);
        }
        ch=getchar();
        while(!(feof(fp)))
        {
            ch=fgetc(fp);
            putchar(ch);
        }
        putchar(10);
        fclose(fp);
    }
    if(choose=='w')
    {
        scanf("%s",filename);
        if((fp=fopen(filename,"wt"))==NULL)
        {
            printf("cannot open this file\n");
            exit(0);
        }
        ch=getchar();
        ch=getchar();
        while(ch!='\n')
        {
            fputc(ch,fp);
            putchar(ch);
            ch=getchar();
        }
        putchar(10);
        fclose(fp);
    }
    if(choose=='c')
    {
        
        char a[50]={0};
        int cnt=1;
        int i;
        char filename1[10];
        char filename2[10];
        scanf("%s",filename1);
        scanf("%s",filename2);
        if((fp=fopen(filename1,"r"))==NULL)
        {
            printf("Cannot open this file");
            exit(0);
        }

            a[0]=fgetc(fp);
        while(!feof(fp))
        {
            a[cnt++]=fgetc(fp);
        }
        
        if((fp1=fopen(filename2,"w"))==NULL)
        {
            printf("Cannot open this file");
            exit(0);
        }
        for(i=0;i<cnt;i++)
        {
            ch=a[i];
            fputc(ch,fp1);
        }
        printf("%s\n",a);
        fclose(fp);
        fclose(fp1);
    }
}
搜索更多相关主题的帖子: void include cannot file 
2012-03-07 17:31
yupeisx
Rank: 1
等 级:新手上路
帖 子:20
专家分:8
注 册:2012-3-7
收藏
得分:0 
回复 楼主 yupeisx
您好,谢谢您的答案,但是
if(choose=='c')
    {
        
        char a[50]={0};
        int cnt=1;
        int i;
        char filename1[10];
        char filename2[10];
        scanf("%s",filename1);
        scanf("%s",filename2);
        if((fp=fopen(filename1,"r"))==NULL)
        {
            printf("Cannot open this file");
            exit(0);
        }

            a[0]=fgetc(fp);
        while(!feof(fp))
        {
            a[cnt++]=fgetc(fp);
        }
        
        if((fp1=fopen(filename2,"w"))==NULL)
        {
            printf("Cannot open this file");
            exit(0);
        }
        for(i=0;i<cnt;i++)
        {
            ch=a[i];
            fputc(ch,fp1);
        }
        printf("%s\n",a);
        fclose(fp);
        fclose(fp1);
    }
我要的结果不是绿色字体说的将正确的复制过去,而是红色字体中说的,走单步时候,那个数组中的数值是不正常的。求解答谢谢
2012-03-07 18:04
yupeisx
Rank: 1
等 级:新手上路
帖 子:20
专家分:8
注 册:2012-3-7
收藏
得分:0 
回复 5楼 有容就大
这就是 feof函数的弊端所在 他多读取了一个数据  但是 应该怎么更改这个问题 求解??  谢谢
2012-03-08 22:14
快速回复:文件复制问题,做半天都是错的,球大婶解答
数据加载中...
 
   



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

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