Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101947617
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: C/C++

2008-04-20 16:43:07

作者:    


    下面程序把一个浮点数组以二进制方式写入文件test_b.dat中。
    例14:
     #include
     main()
     {
          float f[6]={3.2, -4.34, 25.04, 0.1, 50.56, 80.5};
                         /*定义浮点数组并初始化*/
          int i;
          FILE *fp;
          fp=fopen("test_b.dat", "wb"); /*创建一个二进制文件只写*/
          fwrite(f, sizeof(float), 6, fp);/*将6个浮点数写入文件中*/
          fclose(fp);                   /*关闭文件*/
     }
    下面例子从test_b.dat文件中读100个整型数, 并把它们放到dat数组中。
    例15:
     #include
     main()
     {
          FILE *fp;
          int dat[100];
          fp=fopen("test_b.dat", "rb");/*打开一个二进制文件只读*/
          if(fread(dat, sizeof(int), 100, fp)!=100)
                                        /*判断是否读了100个数*/
            {
               if(feof(fp))
                 printf("End of file"); /*不到100个数文件结束*/
               else
                 printf("Read error");  /*读数错误*/
          fclose(fp);                   /*关闭文件*/
     }
    注意:
    当用标准文件函数对文件进行读写操作时, 首先将所读写的内容放进缓冲区,
即写函数只对输出缓冲区进行操作, 读函数只对输入缓冲区进行操作。例如向一
个文件写入内容, 所写的内容将首先放在输出缓冲区中, 直到输出缓冲区存满或
使用fclose()函数关闭文件时, 缓冲区的内容才会写入文件中。若无fclose()
函数, 则不会向文件中存入所写的内容或写入的文件内容不全。有一个对缓冲区
进行刷新的函数, 即fflush(), 其调用格式为:
    int fflush(FILE *stream);
    该函数将输出缓冲区的内容实际写入文件中, 而将输入缓冲区的内容清除掉。

    4. feof()和rewind()函数
    这两个函数的调用格式为:
     int feof(FILE *stream);
     int rewind(FILE *stream);
    feof()函数检测文件位置指示器是否到达了文件结尾,  若是则返回一个非0
值, 否则返回0。这个函数对二进制文件操作特别有用, 因为二进制文件中,  文
件结尾标志EOF也是一个合法的二进制数,  只简单的检查读入字符的值来判断文
件是否结束是不行的。如果那样的话, 可能会造成文件未结尾而被认为结尾, 所
以就必须有feof()函数。
    下面的这条语句是常用的判断文件是否结束的方法。
     while(!feof(fp))
        fgetc(fp);
    while为循环语句, 将在下面介绍。
    rewind()函数用于把文件位置指示器移到文件的起点处, 成功时返回0,  否
则, 返回非0值。
 

    1.2.2  非标准文件函数
    这类函数最早用于UNIX操作系统, ANSI标准未定义,   但有时也经常用到,
DOS 3.0以上版本支持这些函数。它们的头文件为io.h。
    一、文件的打开和关闭
    1. open()函数
    open()函数的作用是打开文件, 其调用格式为:
     int open(char *filename, int access);
    该函数表示按access的要求打开名为filename的文件, 返回值为文件描述字,
其中access有两部分内容: 基本模式和修饰符, 两者用" "("或")方式连接。修
饰符可以有多个, 但基本模式只能有一个。access的规定如表3-2。
               表3-2  access的规定
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
基本模式    含义    修饰符         含  义
────────────────────────────
O_RDONLY    只读   O_APPEND   文件指针指向末尾
O_WRONLY    只写   O_CREAT    文件不存在时创建文件,
                              属性按基本模式属性
O_RDWR      读写   O_TRUNC    若文件存在, 将其长度
                              缩为0, 属性不变
                   O_BINARY   打开一个二进制文件
                   O_TEXT     打开一个文字文件
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    open()函数打开成功, 返回值就是文件描述字的值(非负值), 否则返回-1。

阅读(332) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~