zoukankan      html  css  js  c++  java
  • C语言文件操作


     程序为什么需要文件?
    1>配置
    unix采用文本 Windows采用注册表二进制文件
    2>媒体数据
    存档在二进制文件中

    还有很多用处


    首先以标准的输入输出谈起~ 

    (1)格式输入输出

    printf("%[flag][width][.prec][hlL]type");
    

    1>

    flag 含义
    - 左对齐
    + 允许显示正号
    0 0填充

    举例:

    int main(){
      a = 123;   printf("-9%d",a);   printf("+9%d",a);   a = 123;   printf("+9%d",a);   printf("9%d",a);
      return 0;
    }

    屏幕上打印为

    --------------------------
    123
    +123
    -123
    -123
    --------------------------
    2>

    width或prec               含义
    number               最小字符数
    *                  下一个参数是字符数
    .number          小数点后保留几位
    .*            下一个参数是小数点后的位数
    举例:
    a = 123.4512;
    printf("9.2%d",a);
    printf("",a);
    //9代表至少有九个字符,2后面保留的小数数位
    屏幕上打印为
    --------------------------
    123.45

    --------------------------

    3>hlL修饰符
    hh 单个字节
    h short
    l long
    ll long long
    L long double

    4>type
    显示类型
    %d 整数类型
    %f float
    %o 八进制
    %x 十六进制
    e 指数
    n 输入输出的个数
    例如
    printf("%nd",1234,&num) //num储存了输出的个数,在这个例子中是4
    hh char
    h short
    l long double


    (2)文件的操作

    1>文件的打开与创建

    用到fopen函数,先看一个例子

    FILE *fp = fopen("12.in","r");
    if(fp)
    {	
        fscanf(fp,"%d",&num);
        fclose(fp);
    }
    else
    {
        //文件打开是失败
    }
    
    FILE *fopen(char *pname,char *mode)

    上述为函数原型,入口参数如下所示

    pname:是一个字符指针,它将指向要打开或建立的文件的文件名字符串。
    mode:是一个指向文件处理方式字符串的字符指针。所有可能的文件处理方式如下所示

    ----------------------------------

    r 打开只读
    r+ 打开读写,从文件开头开始
    w 打开只写,文件不存在则新建,如果存在则清空
    w+ 打开读写,文件不存在则新建,如果存在则清空
    a 打开追加
    ..x 只新建,如果已经存在则无法打开

    ----------------------------------

    返回值为状态:
    正常返回:被打开文件的文件指针。
    异常返回:NULL,表示打开操作不成功。

    总结一下

    打开文件的作用是:
    (1)分配给打开文件一个FILE 类型的文件结构体变量,并将有关信息填入文件结构体变量;
    (2)开辟一个缓冲区;
    (3)调用操作系统提供的打开文件或建立新文件功能,打开或建立指定文件;

     2>文件的关闭

    文件的关闭简单,就是利用fclose函数

    int fclose(FILE *fp);

    入口参数为文件指针,返回值为状态(正常为0,错误为EOF)

    3>文件的读写操作

    文件的读写有多种函数。

    举一个例子,格式化读写。

    格式化写

    1.函数原型

    int fprintf(FILE *fp,char *format,arg_list)

    2.功能说明
      将变量表列(arg_list)中的数据,按照format指出的格式,写入由fp指定的文件。fprintf()函数与printf()函数的功能相同,只是printf()函数是将数据写入屏幕文件(stdout)。
    3.入口参数说明
      fp:这是个文件指针,指出要将数据写入的文件。
      format:这是个指向字符串的字符指针,字符串中含有要写出数据的格式,所以该字符串成为格式串。格式串描述的规则与printf()函数中的格式串相同。
      arg_list:是要写入文件的变量表列,各变量之间用逗号分隔。

    void main()
    {
        char name[10];
        int nAge,nClass;
        long number;
        FILE *fp;
        if((fp=fopen("student.txt","w"))==NULL)
        {
            printf("The file %s can not be opened.
    ","student.txt");
            return;
        }
        fscanf(stdin,"%s %d %d %ld",name,&nClass,&nAge,&number);
        fprintf(fp,"%s %5d %4d %8ld",name,nClass,nAge,number);
        fclose(fp);
        if((fp=fopen("student.txt","r"))==NULL)
        {
            printf("The file %s can not be opened.
    ","student.txt");
            return;
        }
        fscanf(fp,"%s %d %d %ld",name,&nClass,&nAge,&number);
        printf("name nClass nAge number
    ");
        fprintf(stdout,"%-10s%-8d%-6d%-8ld
    ",name,nClass,nAge,number);
        fclose(fp);
    }

    下面一篇文章对文件读写做出详细说明http://www.cnblogs.com/likebeta/archive/2012/06/16/2551780.html

  • 相关阅读:
    DS博客作业06--图
    DS博客作业05--树
    DS博客作业03--栈和队列
    DS博客作业02--线性表
    DS博客作业03--栈和队列
    DS博客作业02--线性表
    DS博客作业01--日期抽象数据类型设计与实现
    C语言博客作业06--结构体&文件
    C语言博客05--指针
    C语言博客作业04--数组
  • 原文地址:https://www.cnblogs.com/flyingjun/p/5167512.html
Copyright © 2011-2022 走看看