zoukankan      html  css  js  c++  java
  • 文件编辑

     1、文件创建

    任务描述:

    • 输入要创建的文件名,输出是否创建成功信息

    相关知识:

    • FILE *fopen(const char *path, const char *mode):创建文件

        fopen函数打开一个文件,文件名由函数参数path给出。参数mode指向一个字符串,字符串中包含着访问文件的方式,具有有:

        “r”: 以只读方式打开文件,该文件必须存在。

        “w”: 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

        “r+”: 以可读写方式打开文件,该文件必须存在。

        “w+”: 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

        “a”: 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。

        “a+”: 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。

        如果打开文件成功,则fopen函数返回一个指向FILE结构体的指针,否则返回NULL,并把错误代码存在errno中。

        FILE是个结构体,包含了管理文件流所需的各个信息,包括文件描述符,指向缓冲区的指针等。

        使用w,w+,或a+,都可以创建一个文件。

    • int fclose(FILE* stream):使用fclose函数来关闭fopen打开的文件流关闭一个流,可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区。

    main.c:

    #include<stdio.h>
    #include<stdlib.h>
    int main(int argc,char *argv[])
    {
        FILE *fp;
        if(argc!=2){
            perror("argc error
    ");
            exit(1);
        }
        fp=fopen(argv[1],"w");
        if(fp==NULL){
            perror("fopen fail
    ");
            exit(1);
        }
        else
            printf("create success
    ");
        fclose(fp);
        
        return 0;
    }

    2、文件写

    任务描述:

    • 输入文件名及要写入文件的字符串
    • 每次需要在原有文件内容基础上追加写入

    相关知识:

    • size_t fwrite(void *ptr, size_t size, size_t nmemb, FILE *stream):向文件中写入数据      

        ptr:用于获取数据的地址(指针)

        size:单个元素的大小,单位是字节

        nmemb:元素个数

        stream:提供数据的文件指针

        函数返回写入文件的元素的个数

    main.c:

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    int main(int argc,char *argv[]) { FILE *fp; char str[20]={''}; if(argc!=3){ perror("argc error "); exit(1); } fp=fopen(argv[1],"a+"); if(fp==NULL){ perror("fopen fail "); exit(1); } strcpy(str,argv[2]); fwrite(str,1,strlen(str),fp); fclose(fp); return 0; }

    3、文件读

    任务描述:

    • 命令行中以文本文件名做输入参数,打印文件中内容

    相关知识:

    • size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream):从文件中读取数据    

        ptr:用于接收数据的地址(指针)
        size:单个元素的大小,单位是字节
        nmemb:元素个数
        stream:提供数据的文件指针

        返回值:读取的元素的个数

    main.c:

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    int main(int argc,char *argv[])
    {
        FILE *fp;
        char str[20]={''};
        //memset(str,'',20);
        if(argc!=2){
            perror("argc error
    ");
            exit(1);
        }
        
        fp=fopen(argv[1],"r");
        if(fp==NULL){
            perror("fopen fail
    ");
            exit(1);
        }
        printf("The text in file is:");
        fread(str,1,20,fp);
        printf("%s",str);
        fclose(fp);
        
        return 0;    
    }

    4、文件的重命名

    任务描述:

    • 输入文件名以及新文件名,输出是否成功命名文件

    相关知识:

    • int rename(const char *old_filename, const char *new_filename):对文件进行重命名    

        old_filename: 包含将要被重命名的文件的原始名称。

        new_filename:新的文件名称。

    main.c:

    #include<stdio.h>
    #include<stdlib.h>
    
    int main(int argc,char *argv[])
    {int a;
        if(argc!=3){
            perror("argc error
    ");
            exit(1);
        }
    
        a=rename(argv[1],argv[2]);
        if(a==-1){
            perror("rename error
    ");
            exit(1);
        }
        else
            printf("rename success
    ");
        
        return 0;
    }

    5、文件另存为

    任务描述:

    • 将已有文件另存为一个新的文件
    • 综合文件的创建和读写操作

    main.c:

    #include<stdio.h>
    #include<stdlib.h>
    
    int main(int argc,char *argv[])
    {
        FILE *fp1,*fp2;
        int n;char str[512];
        
        if(argc!=3){
            perror("argc error
    ");
            exit(1);
        }
        fp1=fopen(argv[1],"r");
        if(fp1==NULL){
            perror("fopen1 fail
    ");
            exit(1);
        }
        fp2=fopen(argv[2],"w");
        if(fp2==NULL){
            perror("fopen2 fail
    ");
            exit(1);
        }
    
        n=fread(str,1,20,fp1);
        if(n==-1){
            perror("save fail
    ");
            exit(1);
        }
        else{
            fwrite(str,1,n,fp2);
            printf("save success
    ");
        }
        fclose(fp1);
        fclose(fp2);
        
        return 0;
    }

    6、文件的删除

    任务描述:

    • 输入要删除的文件名,输出是否删除成功的信息

    相关知识:

    • int remove(const char *filename):删除文件

    main.c:

    #include<stdio.h>
    #include<stdlib.h>
    
    int main(int argc,char *argv[])
    {
        FILE *fp1;int n;
        if(argc!=2){
            perror("argc error
    ");
            exit(1);
        }
    /*
        fp1=fopen(argv[1],"r");
        if(fp1==NULL){
            perror("fopen1 fail
    ");
            exit(1);
        }
    */
        n=remove(argv[1]);
        if(n!=0){
            perror("removr error
    ");
            exit(1);
        }
        else
            printf("remove success
    ");
    //    fclose(fp1);
        
        return 0;
    }
  • 相关阅读:
    Firefox OS 开发者预览版手机上线数小时即售罄
    7 款风格新颖的 jQuery/CSS3 导航
    大数据时代的 9 大KeyValue存储数据库
    jQuery 2.0发布,不支持IE 6/7/8
    全面理解面向对象的 JavaScript
    Hdoop入门
    Java Web 高性能开发,第 2 部分: 前端的高性能
    MySQL数据库存储引擎和分支现状
    11 个超棒的 jQuery 分步指引插件
    [扩展/新建swap]将文件或分区加载为swap
  • 原文地址:https://www.cnblogs.com/weijing24/p/4784174.html
Copyright © 2011-2022 走看看