zoukankan      html  css  js  c++  java
  • 《C语言程序设计(第四版)》阅读心得(四 文件操作)

    第10章  对文件的输入输出

    函数名

    调用形式

    功能

    fopen

    fopen(“a1”,”r”);

    打开一个文件

    fclose

    fclose( fp );

    关闭数据文件

    fgetc

    fgetc( fp );

    从fp指向的文件读入一个字符

    fputc

    fputc( ch,fp);

    把字符ch写到文件指针变量fp所指向的文件中

    fgets

    fgets(str,n,fp);

    从fp所指向的文件中读入一个长度为n-1的字符串,并在最后加一个’’字符,然后存放到字符数组str中

    如果在读完n-1一个字符之前遇到换行符’ ’或文件结束符EOf,读入即结束,但将所遇到的’ ’也读入

    fputs

    fputs( str fp);

    fputs( “China”,fp);

    把str所指向的字符串写到fp所指向的文件中

    fscanf

    fcanf ( fp,”%d”,&i);

    从fp所指向的文件中读取一个整数送到整型变量i

    fprintf

    fprintf( fp,”%d”,i)

    将i按%d的格式输出到fp指向的文件中

    fread

    fread( buffer,size,count,fp)

    Buffer是地址

    从fp所指向的文件中buffer地址开始读取count个大小为size的字符。若成功返回count

    fwrite

    fwrite( buffer,size,count,fp)

    向fp所指向的文件中buffer地址开始存入count个大小为size的字符。若成功返回count

    rewind

    rewind( fp )

    使文件位置标记指向文件开头

    fseek

    fseek( fp, xxL,0)

    0表示文件开始位置

    1表示文件当前位置

    2表示文件末尾位置

    位移量是long型,不要忘记用L

    1、打开与关闭文件

        fopen( 文件名,使用文件方式);

    常用下面的方法打开和关闭一个文件

    FILE *fp;  //指向文件型数据的指针变量
    if( (fp = fopen("file1","r") )==NULL)
    {
        printf(" Cannot open!");
        exit(0);  //终止程序
    }
    
    fclose (fp);  //关闭数据文件

    2、顺序读写数据文件

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        FILE *fp;
        char ch,filename[10];
        scanf("%s",filename);
        if( (fp=fopen(filename,"w"))==NULL)
        {
            printf("打开失败
    ");
            exit(0);
        }
        ch = getchar(); //接收最后的回车符
        ch = getchar(); //接收第一个字符
        while( ch!='#') //输入#循环结束
        {
            fputc(ch,fp);
            putchar(ch);
            ch = getchar();
        }
        fclose(fp);
    
        return 0;
    }

    3、随机读写数据文件

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #define SIZE 10
     4 struct Studet
     5 {
     6     char name[10];
     7     int num;
     8     int age;
     9 }stud[SIZE];
    10 void Save()
    11 {
    12     FILE *fp;
    13     int i;
    14     if( (fp=fopen("stu.dat","wb"))==NULL)
    15     {
    16         printf("Connot open
    ");
    17         exit(0);
    18     }
    19     for( i=0; i<SIZE; i++)
    20         if( fwrite( &stud[i],sizeof( struct Studet),1,fp)!=1)
    21           printf("Write Error
    ");
    22     fclose(fp);
    23 }
    24 int main()
    25 {
    26     int i;
    27 
    28     for( i=0; i<SIZE; i++)
    29         scanf("%s%d%d",stud[i].name,&stud[i].num,&stud[i].age);
    30     Save();
    31     FILE *fp;
    32     if( (fp=fopen("stu.dat","rb"))==NULL)
    33     {
    34         printf("Connot open
    ");
    35         exit(0);
    36     }
    37     for( i=0; i<10; i+=2)
    38     {
    39         fseek( fp, i*sizeof(struct Studet),0);
    40         fread(&stud[i],sizeof(struct Studet),1,fp);
    41         printf("%-10s%4d%4d
    ",stud[i].name,stud[i].num,stud[i].age);
    42     }
    43     return 0;
    44 }

    大概文件操作最难也就考到这个地步了吧!

    4、fseek

     SEEK_SET: 文件开头
      SEEK_CUR: 当前位置
      SEEK_END: 文件结尾
      其中SEEK_SET,SEEK_CUR和SEEK_END和依次为0,1和2.
      简言之:
      fseek(fp,100L,0);把fp指针前移到离文件开头100字节处;
      fseek(fp,100L,1);把fp指针前移到离文件当前位置100字节处;
      fseek(fp,-100L,2);把fp指针后退到离文件结尾100字节处。

    在这个国度中,必须不停地奔跑,才能使你保持在原地。如果想要寻求突破,就要以两倍现在速度奔跑!
  • 相关阅读:
    bfs,队列
    Wannafly挑战赛22 A计数器(裴蜀定理 gcd)
    素数筛模板
    HDU
    HDU
    控制精度-----直接截取,不需四舍五入
    jstl下载与配置
    B. Treasure Hunt
    动态数组vector
    Manacher算法
  • 原文地址:https://www.cnblogs.com/yuxiaoba/p/8483988.html
Copyright © 2011-2022 走看看