上一章我们简单了解了fopen文件的打开,但是在fopen里我们看到想对文件进行操作其实很死板,要么从头开始要么就是在尾部追加,那么在C语言中有没有对文件的自由一点的操作呢,其实是有的,这一章我们就来了解两个函数,fseek和ftell
我们先来看一下fseek函数的原型:int fseek (FILE *__stream, long int __off, int __whence);
我们看fseek有三个参数:
第一个参数是一个指向文件的FILE指针,也就是用fopen打开的文件;
第二个参数为偏移量,表示从起始位置开始要移动的距离,也就是你想在文件的那个位置进行操作,那么就是从文件的指针位置到你需要操作的位置的字节数,这个是类型是long,可以是正值也可以负值,负值就是从尾部数上来;
第三个参数是模式,用来标识起始点;
然后看下它的返回值,它的返回值是int类型,如果成功则是0,如果失败则是-1;
我们来看下文件的起始点模式有哪些:
那我们在来看一下ftell函数,ftell函数的原型是这样的long int ftell (FILE *__stream);
这个函数就是得到文件指针当前的位置,它返回的是long类型,因为long的取值范围是-2147483648~2147483647,所以不能超过2.1G文件进行操作。
我们来看一下例子:
我们先来看下没有使用fseek的时候:
接着我们来看下,把那个注释部分去掉:
现在大家应该对这两个函数有所理解了吧。
注意:这里有一个地方需要注意这两个函数都是需要确保文件已经打开的时候才能时候,如果文件没有打开,那么就会出先错误。