首页 > 编程笔记 > C语言笔记 阅读:69

c语言fseek函数的用法(附带实例)

fseek() 函数的作用是移动文件内部的位置指针。其一般形式如下:
fseek(文件类型指针,位移量,起始点);

表 1 起始点
起始点 表示符号 数字表示
文件首 SEEK_SET 0
文件当前位置 SEEK_CUR 1
文件尾 SEEK_END 2

例如,下面的语句表示将位置指针从当前位置向后退 20 个字节:
fseek(fp,-20L,1);
注意,fseek() 函数一般用于二进制文件。在文本文件中使用时,由于要进行转换,计算的位置会出现错误。

文件的随机读写在移动位置指针之后进行,即可用前面介绍的任一种读写函数进行读写。

【实例】快递员送快递。快递员通常会将收货人电话的后 4 位写到快递包裹上,作为取货号使用。编写程序,例如收货人电话是 123****8900,则输出取货号 8900。运行程序前,需要在 E 盘设置 goods.txt 文件,内容是收货人的手机号。代码如下:
#include<stdio.h>
#include<process.h>
int main()
{
    FILE *fp;
    char filename[30], str[50]; /* 定义两个字符型数组 */
    printf("请输入文件路径:\n");
    scanf("%s", filename); /* 输入文件名 */
    if((fp = fopen(filename, "wb")) == NULL) /* 判断文件是否打开失败 */
    {
        printf("不能打开文件!\n 请按任意键继续\n");
        getchar();
        exit(0);
    }
    printf("请输入字符串:\n");
    getchar();
    gets(str);
    fputs(str, fp);
    fclose(fp);
    if((fp = fopen(filename, "rb")) == NULL) /* 判断文件是否打开失败 */
    {
        printf("不能打开文件!\n 请按任意键继续\n");
        getchar();
        exit(0);
    }
    fseek(fp, 7L, 0);
    fgets(str, sizeof(str), fp);
    printf("\n取货号为:\n");
    puts(str);
    fclose(fp);
    return 0;
}
程序运行结果为:

请输入文件路径:
E:/demo.txt
请输入字符串:
123****8900
取货号为:
8900

其中,如下代码的含义是将文件指针指向距文件首 5 个字节的位置,也就是指向字符串中的第 6 个字符。
fseek(fp,5L,0);

相关文章