zoukankan      html  css  js  c++  java
  • 文件基本操作

    文件基本操作    
    操作系统中对文件的操作主要包括:
    打开、关闭、读、写、 定位等操作
    所用到的库函数主要包括:
    文件打开函数: fopen
    文件关闭函数: fclose
    字符读写函数: fgetc和fputc
    字符串读写函数:fgets和fputs
    数据块读写函数:freed和fwrite
    格式化读写函数:fscanf和fprinf
    随机读写函数: rewind 函数和fseek函数

    文件的操作函数
    文件的打开(fopen函数)
    函数调用:
    FILE *fp;
    fp=fopen(文件名,使用文件方式);
    ①文件名:也就是准备访问的文件的名字;
    ②使用文件的方式(“读”还是“写”等);
    ③让哪一个指针变量指向被打开的文件。
    文件使用方式     含   义
    "r"   (只读)为输入打开一个文本文件
    "w"   (只写)为输出打开一个文本文件
    "a"   (追加)向文本文件尾增加数据
    "rb"  (只读)为输入打开一个二进制文件
    "wb"  (只写)为输出打开一个二进制文件
    "ab"  (追加)向二进制文件尾增加数据
    "r+"  (读写)为读/写打开一个文本文件
    "w+"  (读写)为读/写建立一个新的文本文件
    "a+"  (读写)为读/写打开一个文本文件
    "rb+" (读写)为读/写打开一个二进制文件
    "wb+" (读写)为读/写建立一个新的二进制文件
    "ab+" (读写)为读/写打开一个二进制文件

    一般缓冲文件操作有三个必需的步骤: 
           (1) 在使用文件前要调用打开函数将文件打开, 若打开失败,则返回一个空指针;若打开正           常,可以得到一个文件指针,并利用它继续对文件操作。 
           (2) 可调用各种有关函数,利用该指针对文件进行具体处理,一般要对文件进行读或写操作。
           (3) 在文件用完时,应及时调用关闭函数来关闭文件, 切断数据流,防止数据遗失或误操作           破坏文件内容。

    文件打开的几个说明:
    ①凡用“r”打开一个文件时,该文件必须已经存
    在,且只能从该文件读出
    ②用“w”打开的文件只能向该文件写入。若打开
    的文件不存在,则以指定的文件名建立该文
    件,若打开的文件已经存在,则将该文件删
    去,重建一个新文件
    ③若要向一个已存在的文件追加新的信息,只能
    用“a”方式打开文件
    ④ 在打开一个文件时,如果出错,fopen将返回
    一个空指针值NULL。在程序中可以用这一信息
    来判别是否完成打开文件的工作,并作相应的
    处理。
    文件关闭函数fclose文件一旦使用完毕,应用
    关闭文件函数把文件关闭,以避免文件的数据
    丢失等错误
    调用的一般形式是:fclose (文件指针);
        例如:fclose (fp);
        正常完成关闭文件操作时,fclose函数返回
    值为0
        如返回非零值则表示有错误发生
    读写对文件的读和写是最常用的文件操作
        在C语言中提供了多种文件读写的函数:
    字符读写函数:fgetc和fputc
    以字符(字节)为单位的读写函数。每次
    可从文件读出或向文件写入一个字符
    字符串读写函数:fgets和fputs
    数据块读写函数:freed和fwrite
    格式化读写函数:fscanf和fprinf
        使用以上函数都要求包含头文件stdio.h


    fscanf() 匹配符


    文件链表综合练习
            《文件加密器》

    习题答案
    1、
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <conio.h>


    void code(char flag)
    {
        FILE *fp = NULL;
        char *str,nam1[50],nam2[50];
        unsigned int password,size,i;
        if(flag==1)
        {
            printf("请输入要加密的文件地址\n");
        }
        else if(flag==2)
        {
            printf("请输入要解密的文件地址\n");
        }
        scanf("%s",nam1);
        fp=fopen(nam1,"rb");
        if(fp==NULL)
        {
            printf("文件打开失败\n");
            printf("回车继续\n");
             getch();
        }
        else
        {
            fseek(fp,0,2);
            size=ftell(fp);
            rewind(fp);
            printf("请输入目标文件地址\n");
            scanf("%s",nam2);
            printf("请输入密码\n");
            scanf("%d",&password);
            str=(char *)malloc(size);
            fread(str,size,1,fp);
            fclose(fp);
            for(i=0;i<size;i++)
            {
               
                if(flag==1)
                {
                    *(str+i)+=password;
                }
                else if(flag==2)
                {
                    *(str+i)-=password;
                }
            }
            fp=fopen(nam2,"wb+");
            fwrite(str,size,1,fp);
            fclose(fp);
            if(flag==1)
            {
                printf("恭喜!加密成功\n");
            }
            else if(flag==2)
            {
                printf("恭喜!解密成功\n");
            }
            printf("回车继续\n");
            }
    }

    void dis(void)
    {    
        system("cls");
        printf("*****************************************************\n");
        printf("*******************按*1*加密文件*********************\n");
        printf("*******************按*2*解密文件*********************\n");
        printf("*******************按*0*退出程序*********************\n");
        printf("*****************************************************\n");
    }

    int main(void)
    {
        while(1)
        {
            unsigned int select;
            dis();
            scanf("%d",&select);
            if(select==0)
            {
                break;
            }
            switch(select)
            {
                case 1:code(1);break;
                case 2:code(2);break;
                default:printf("输入错误\n");break;
            }
        }
    }

  • 相关阅读:
    跨域问题
    Django缓存机制
    Django Reat Framework --- 版本控制
    Hellow!
    回忆
    突然看见新评论通知
    [退役前的小声bbbbbbbbbbbbbbbbbbbbbb]
    【题解】【CQOI2018】解锁屏幕(玄学优化)
    solution
    1009-自闭++
  • 原文地址:https://www.cnblogs.com/qinkai/p/2429597.html
Copyright © 2011-2022 走看看