文档详情

文件读写与定位.ppt

发布:2017-02-24约2.41千字共9页下载文档
文本预览下载声明
文件读写与定位 文件字符串输出函数 文件格式化输入输出函数 其它文件读写函数 其它文件读写函数 文件定位-ftell 文件定位--fseek 文件相关的函数 教学内容 文件字符串输入输出函数 文件格式化输入输出函数 文件定位 fread函数和fwrite函数 ANSI C设置两个函数fread和fwrite,用来读写一个数据块(一组数据,如一个实数或一个结构体变量的值)。它们的一般调用形式为: fread(buffer, size, count, fp); fwrite(buffer, size, count, fp); buffer:是一个指针。对fread来说,它是读入数据的存放地址;对fwrite来说,是要输出数据的起始地址。 size:要读写的字节数。 count:要进行读写多少个size字节的数据项。 fp:文件型指针。 若函数调用成功,则返回值为count的值。 如果文件以二进制形式打开,用fread和fwrite函数就可以读写任何类型的信息,如: fread(f, 4, 2, fp); fprintf函数和fscanf函数 函数fprintf和fscanf是格式化读写函数,读写对象不是终端而是磁盘文件。它们的一般调用形式为: fprintf(文件指针, 格式字符串, 输出表列); fscanf(文件指针, 格式字符串, 输入表列); 例如: fprintf(fp, %d, %6.2f, i, t); fscanf(fp, %d, %f, i, t); 用fprintf和fscanf函数对磁盘文件进行读写,使用方便,容易理解;但由于在输入时要将ASCII码转换为二进制形式,在输出时又要将二进制形式转换成字符,花费时间比较多。 在内存与磁盘频繁交换数据的情况下,最好不用fprintf和fscanf函数,而用fread和fwrite函数。 其他读写函数 函数putw和getw,用来对磁盘文件读写一个字(整数)。 例如: putw(10, fp); /*将整数10输出到fp指向的文件*/ i=getw(fp); /*从fp指向的文件中读一个整数到内存,赋给整型变量i*/ 函数fgets和fputs,是从指定文件读入一个字符串。 例如: fgets(str, n, fp); n为要求得到的字符;但只从fp指向的文件中输入n-1个字符,然后在最后加一个\0字符。 若在读完n-1个字符之前遇到换行符或EOF,读入即结束。 得到的字符放到字符数组str中。 函数返回值为str的首地址。 其他读写函数 函数fputs,作用是向指定文件输出一个字符串。 例如: fputs(China, fp); /*将字符串China输出到fp指向的文件*/ 函数中第一个参数可以是字符串常量、字符数组名或字符型指针。 字符串末尾的\0字符不输出。 若输出成功,函数返回值为0;失败时,为EOF(-1)。 函数fputs和fgets类似于puts和gets函数,只是fputs和fgets函数以指定的文件为读写对象。 可以自己编写读写任何类型数据的函数。 ftell函数 ftell函数的作用是得到流式文件中的当前位置,用相对于文件开头的位移量来表示。 如果ftell函数的返回值为-1L,表示出错。 例如: i=ftell(fp); if (i==-1L) printf(error\n); /*变量i 存放当前位置*/ /*若调用函数出错,则输出error*/ rewind()函数的作用是使位置指针重新返回文件的开头。此函数没有返回值。调用形式为: rewind(文件指针); 例如: rewind(fp); fseek函数 调用形式为:fseek(文件类型指针, 位移量, 起始点); 起始点:用0、1或2代替,含义如下: 位移量:以起始点为基点,向前移动的字节数。ANSI C标准要求位移量是long型数据,规定在数字的末尾加一个L,表示该数字是long型。 fseek函数一般用于二进制文件,因为文本文件要发生字符转换,计算位置时往往会发生混乱。 文件末尾 文件当前位置 文件开始 起始点 SEEK_END SEEK_CUR SEEK_SET 名 字 2 1 0 用数字代表 把一个字(int型) 输出到指定文件 putw( ) 从指定文件中读取数据项 fread( ) 把数据项写到指定文件 fwrite( ) 从指定文件按格式输入数据 fscanf( ) 按指定格式将数据写
显示全部
相似文档