标题:文件复制问题,做半天都是错的,球大婶解答
取消只看楼主
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-362492-1-1.html




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

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