C语言基本教程(三)输入输出函数及节制流程语句(10)
当前位置:以往代写 > C/C++ 教程 >C语言基本教程(三)输入输出函数及节制流程语句(10)
2019-06-13

C语言基本教程(三)输入输出函数及节制流程语句(10)

C语言基本教程(三)输入输出函数及节制流程语句(10)

3.文件的随机读写
有时用户想直接读取文件中间某处的信息,若用文件的顺序读写必需从文件头开始直到要求的文件位置再读,这显然不利便。Turbo C2.0提供了一组文件的随机读写函数,即可以将文件位置指针定位在所要求读写的处所直接读写。
文件的随机读写函数如下:
int fseek (FILE *stream, long offset, int fromwhere);
int fread(void *buf, int size, int count, FILE *stream);
int fwrite(void *buf, int size, int count, FILE *stream);
long ftell(FILE *stream);
fseek()函数的浸染是将文件的位置指针配置到从fromwhere开始的第offset字节的位置上,个中fromwhere是下列几个宏界说之一:
文件位置指针起始计较位置fromwhere
━━━━━━━━━━━━━━━━━━━━━━━━━━━
标记常数 数值 寄义
───────────────────────────
SEEK_SET 0 从文件开头
SEEK_CUR 1 从文件指针的现行位置
SEEK_END 2 从文件末端
━━━━━━━━━━━━━━━━━━━━━━━━━━━
offset是指文件位置指针从指定开始位置(fromwhere指出的位置)跳过的字节数。它是一个长整型量,以支持大于64K字节的文件。fseek()函数一般用于对二进制文件举办操纵。
当fseek()函数返回0时表白操纵乐成, 返回非0暗示失败。下面措施从二进制文件test_b.dat中读取第8个字节。
例13:
#include<stdio.h>
main()
{
FILE *fp;
if((fp=fopen("test_b.dat", "rb"))==NULL)
{
printf("Can’t open file");
exit(1);
}
fseek(fp, 8. 1, SEEK_SET);
fgetc(fp);
fclose(fp);
}
fread()函数是从文件中读count个字段,每个字段长度为size个字节,并把它们存放到buf指针所指的缓冲器中。
fwrite()函数是把buf指针所指的缓冲器中,长度为size个字节的count个字段写到stream指向的文件中去。
跟着读和写字节数的增大,文件位置指示器也增大,读几多个字节,文件位置指示器相应也跳过几多个字节。读写完毕函数返回所读和所写的字段个数。
ftell()函数返回文件位置指示器的当前值,这个值是指示器从文件头开始算起的字节数,返回的数为长整型数,当返回-1时,表白呈现错误。

    关键字:

在线提交作业