存储

作者: ie大博 | 来源:发表于2016-10-21 14:41 被阅读0次

    i# 存储

    • c语言存储主要分两种方式:文本文件,二进制。
    • 二进制:视频,mp3,程序
    • 记事本

    存储步骤

    (1)打开文件

    • 打开文件FILE. 。。FILE是一个文件结构体的数据类型就像int,只不过是一个类型。
    • FILE*fp代表一个文件指针变量,FILE :代表这个指针指向一个文件。
    • fopen(),第一个参数是传文件路径。第二个参数是指打开文件的方式。

    r:读的方式
    w:写的方式:如果这个文件不存在,会新建一个文件。。如果这个文件存在,就会把原来的内容删除,然后再写。
    a:追加的方式
    如果文件打开失败,fopen的返回值是NULL。否则就是文件的地址。如果文件打开失败,可以用perror(“打开失败的原因”)查出原因。

    打开失败的原因
    1. 如果是以只读的方式打开,然而打开的文件不存在。
    1. 内存已满。

    (2)对文件操作

    (3)关闭保存文件

    #include<stdio.h>
    #include<string.h>
    /*int main()
    {
        FILE *fp=fopen("/home/alex/1612.c/language.c/1021/1.txt","w");//w表示写入
        if(fp==NULL)
        {
            perror("fopen failed:");
            return 0;
        }
        fputc('a',fp);///输入字符a
        fclose(fp);
        return 0;
    }*/
    /*int main()
    {
    
        FILE *fp=fopen("/home/alex/1612.c/language.c/1021/1.txt","r");//r表示可读
        if(fp==NULL)
        {
            perror("fopen failed:");
            return 0;
        }
    
        char ch=fgetc(fp);///读取字符
        printf("ch=%c\n",ch);
    
        fclose(fp);
    }*/
    /*int main()
    {
    
        FILE *fp=fopen("/home/alex/1612.c/language.c/1021/1.txt","w");
        if(fp==NULL)
        {
            perror("fopen failed:");
            return 0;
        }
        fprintf(fp,"a=%d,b=%c\n",2,'c');///向文件输入
        
        fclose(fp);
    }*/
    /*int main()
    {
    
        FILE *fp=fopen("/home/alex/1612.c/language.c/1021/1.txt","r");
        if(fp==NULL)
        {
            perror("fopen failed:");
            return 0;
        }
        int value;
        char ch;
        fscanf(fp,"a=%d,b=%c\n",&value,&ch);///从文件输出
        printf("value=%d,ch=%c\n",value,ch);
        
        fclose(fp);
    }*/
    /*int main()
    {
        FILE *fp=fopen("/home/alex/1612.c/language.c/1021/1.txt","w");
        if(fp==NULL)
        {
            perror("fopen failed:");
            return 0;
        }
        char arr[10]="hello";
        fputs(arr,fp);///输入字符串
    
        fclose(fp);
        return 0;
    }*/
    int main()
    {
        FILE *fp=fopen("/home/alex/1612.c/language.c/1021/1.txt","r");
        if(fp==NULL)
        {
            perror("fopen failed:");
            return 0;
        }
    //  char arr[10]="hello";
        char str[10];
    
        fgets(str,sizeof(str),fp);///调出字符串,但是如果字符串里面有\n,那么就会停止调出。
        printf("str=%s\n",str);
    
        fclose(fp);
        return 0;
    }
    int main()
    {
        FILE *fp=fopen("/home/alex/1612.c/language.c/1021/1.txt","w");
        int a = 8 ;
        fwrite(&a,sizeof(int),1,fp);////用二进制写函数。
    
        fclose(fp);
        return 0;
    }
    /*int main()
    {
        FILE *fp=fopen("/home/alex/1612.c/language.c/1021/1.txt","r");
        int a ;
        fread(&a,sizeof(int),1,fp);////读取内容
        printf("a=%d\n",a);
    
        fclose(fp);
        return 0;
    }*/
    
    typedef struct student////如何写进去一个结构体
    {
        char name[20];
        int num;
    
    }student;
    /*int main()
    {
        student stu={"hello",22};
        FILE *fp=fopen("/home/alex/1612.c/language.c/1021/1.txt","w");
        
        fwrite(&stu,sizeof(stu),1,fp);这个位置和其他是不一样的,记住就可以 了
    
    
        fclose(fp);
        return 0;
    }*/
    int main()
    {
        student stu;
        FILE *fp=fopen("/home/alex/1612.c/language.c/1021/1.txt","r");
        
        fread(&stu,sizeof(stu),1,fp);
    
        printf("stu.name=%s\nstu.num=%d\n",stu.name,stu.num);
    
        fclose(fp);
        return 0;
    }
    
    

    fseek_SET:移动指针,从头开始,正数
    fseek_CUR:从——p开始,正数或者负数
    fseek_END:从文件尾,负数
    ftell:显示指针位置

    相关文章

      网友评论

          本文标题:存储

          本文链接:https://www.haomeiwen.com/subject/gngquttx.html