| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3924 人关注过本帖
标题:新写了个复制粘贴的程序,还请大家看看还有没有什么不足
取消只看楼主 加入收藏
aCprogrammer
Rank: 2
等 级:论坛游民
威 望:3
帖 子:38
专家分:43
注 册:2019-6-25
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:12 
新写了个复制粘贴的程序,还请大家看看还有没有什么不足
#include<stdio.h>
#include<stdlib.h>
void string(char pp[]);//给被复制的文件的文件名进行去双引号的函数 1
void string_1(char vv[]);// 给被复制的文件的文件名进行去双引号的函数 2
char io[100],uu[100];//定义全局变量,保证数据离开被调函数后不会被销毁,用来存放经函数去掉引号后的字符串
int mm=0;



int main()
{
    FILE *fp,*f,*oj;
    char a[100],b[100],ch,aj[100];
   
   
    puts("PS1: the function of this program is to copy one\nspecified file into another specified fileand\nthen destroy the contents of the copied file!");
    puts("\n\n");
    printf("PS2: You can drag files directly in.\n");
    puts("\n\n");
    puts("PS3: You can only copy and paste documents of the same kind!");
    putchar('\n');
    putchar('\n');
    puts("Please enter a file name to copy:");
    gets(b);//输入原始的被复制文件的文件名
    string(b);//调用函数去掉被复制文件的文件名中可能出现的双引号
    putchar('\n');
    puts("Please enter the file name to be pasted:");
    gets(a);//输入原始的要粘贴文件的文件名
    string_1(a);//调用函数去掉要粘贴文件的文件名中可能出现的双引号
    putchar('\n');
    fp=fopen(uu,"ab+");//使用去掉双引号后的文件名打开要粘贴的文件
    if(!fp)
    {
        printf("Can not open the file %s",uu);
        system("pause");
        return 0;
    }
    f=fopen(io,"rb");//使用去掉双引号后的文件名打开被复制的文件
    if(!f)
    {
        printf("Can not open the file %s",io);
        system("pause");
        return 0;
    }
    while(!(feof(f)))
    {
        ch=fgetc(f);
        fputc(ch,fp);
    }
    fclose(fp);//关闭要粘贴的文件
    fclose(f);//关闭被复制的文件
    oj=fopen(io,"wb");//重新打开被复制的文件,并且把其中的数据删除
    if(!oj)
    {
        printf("Can not destroy files %s",b);
        return 0;
    }
    fclose(oj);
    puts("Done!\n");
    system("pause");
    return 0;
}



void string(char pp[])//去文件名中双引号的函数定义1
{
    int rr=0;
    while(pp[rr]!='\0')
    {
        if(pp[rr]!='"')
        {
            io[mm]=pp[rr];
            mm++;
        }
        rr++;
    }
}




void string_1(char vv[])//去文件名中双引号的函数定义2
{
    int o=0;
    int y=0;
    while(vv[o]!='\0')
    {
        if(vv[o]!='"')
        {
            uu[y]=vv[o];
            y++;
        }
        o++;
    }
}
搜索更多相关主题的帖子: 复制 文件 文件名 双引号 函数 
2019-07-04 17:23
aCprogrammer
Rank: 2
等 级:论坛游民
威 望:3
帖 子:38
专家分:43
注 册:2019-6-25
收藏
得分:0 
回复 2楼 rjsp
有什么问题吗,编译的时候没给报错啊
2019-07-04 20:07
aCprogrammer
Rank: 2
等 级:论坛游民
威 望:3
帖 子:38
专家分:43
注 册:2019-6-25
收藏
得分:0 
回复 4楼 rjsp
为什么要用ch!=EOF,不是以二进制的格式打开的吗,feof函数不是检查是否到文件末尾的函数么,而且照你这样的话就不能删除被复制的文件了

[此贴子已经被作者于2019-7-5 14:05编辑过]

2019-07-05 14:02
aCprogrammer
Rank: 2
等 级:论坛游民
威 望:3
帖 子:38
专家分:43
注 册:2019-6-25
收藏
得分:0 
你这个方法C99不支持
2019-07-05 14:09
aCprogrammer
Rank: 2
等 级:论坛游民
威 望:3
帖 子:38
专家分:43
注 册:2019-6-25
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
2019-07-05 14:11
aCprogrammer
Rank: 2
等 级:论坛游民
威 望:3
帖 子:38
专家分:43
注 册:2019-6-25
收藏
得分:0 
回复 9楼 rjsp
我只是搞不懂EOF不是判断文本文件的结尾吗,可我要的不是文本文件的复制粘贴啊
2019-07-05 14:33
aCprogrammer
Rank: 2
等 级:论坛游民
威 望:3
帖 子:38
专家分:43
注 册:2019-6-25
收藏
得分:0 
我这个程序的意思是打开一个被复制的文件,把它复制到另一个文件中,然后把原来的文件数据销毁
2019-07-05 14:35
aCprogrammer
Rank: 2
等 级:论坛游民
威 望:3
帖 子:38
专家分:43
注 册:2019-6-25
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
2019-07-05 14:39
aCprogrammer
Rank: 2
等 级:论坛游民
威 望:3
帖 子:38
专家分:43
注 册:2019-6-25
收藏
得分:0 
那feof(FILE *文件指针)返回了一个非0的值不也可以表示文件结束了吗

[此贴子已经被作者于2019-7-5 15:11编辑过]

2019-07-05 15:10
aCprogrammer
Rank: 2
等 级:论坛游民
威 望:3
帖 子:38
专家分:43
注 册:2019-6-25
收藏
得分:0 
大哥别激动,我只是不明白而已,现在我懂了,但我设置的删除被复制文件的数据是因为它既然已经被复制了,那也就没有存在的意义了……
2019-07-05 15:39
快速回复:新写了个复制粘贴的程序,还请大家看看还有没有什么不足
数据加载中...
 
   



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

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