📜  C++ fseek()

📅  最后修改于: 2020-09-25 08:23:41             🧑  作者: Mango

C++中的fseek() 函数设置给定文件流的文件位置指示符。

fseek() 函数在头文件中定义。

fseek()原型

int fseek(FILE* stream, long offset, int origin);

如果以二进制模式打开文件,则文件指针的新位置将与原点精确偏移字节。

如果以文本模式打开文件,则offset的支持值为:

如果流是面向宽的,则同时应用文本流和二进制流的限制,即,使用SEEK_SET允许ftell的结果,并且从SEEK_SET和SEEK_CUR允许零偏移,但不允许SEEK_END。

fseek 函数还撤消ungetc的影响并清除文件结束状态(如果适用)。

如果发生读取或写入错误,则会设置错误并且文件位置不受影响。

fseek()参数

fseek() origin values
Value Description
SEEK_SET Beginning of file
SEEK_CUR Current position of file pointer
SEEK_END End of file

fseek()返回值

示例:fseek() 函数如何工作?

#include 

int main()
{
    FILE* fp = fopen("example.txt","w+");
    char ch;

    fputs("Erica 25 Berlin", fp);
    rewind(fp);

    printf("Name: ");
    while((ch=fgetc(fp))!=' ')
        putchar(ch);
    putchar('\n');
    
    printf("Age: ");
    fseek(fp,10,SEEK_SET);
    while((ch=fgetc(fp))!=' ')
        putchar(ch);
    putchar('\n');

    printf("City: ");
    fseek(fp,15,SEEK_SET);
    while((ch=fgetc(fp))!=EOF)
        putchar(ch);
    putchar('\n');

    fclose(fp);
    return 0;
}

运行该程序时,输出为:

Name: Erica
Age: 25
City: Berlin