21xrx.com
2024-12-22 20:08:54 Sunday
登录
文章检索 我的文章 写文章
C++文件指针的移动操作
2023-07-12 14:22:44 深夜i     --     --
C++ 文件指针 移动操作 seekg seekp

在C++中,文件指针是对打开的文件进行读写操作的关键。文件指针可以使用fseek()和rewind()函数进行移动。这两个函数的作用都是用来改变文件指针的位置,从而在读写操作时可以访问文件中的特定部分。下面我们来看一下这两个函数的使用方法。

1. fseek()

fseek()函数可以在文件中移动文件指针的位置,其原型如下:

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

其中,stream是指向文件的指针,offset是指针移动的字节数,而whence则确定指针移动的起始位置。

whence的取值:

- SEEK_SET:从文件起始位置开始偏移

- SEEK_CUR:从文件当前位置开始偏移

- SEEK_END:从文件末尾位置开始偏移

下面我们以一个简单的示例来说明fseek()的使用方法:

  #include

  #include

  int main() {

    FILE *fp = fopen("test.txt", "r");

    if (fp == NULL) {

      printf("File open failed!\n");

      return -1;

    }

    fseek(fp, 7, SEEK_SET);

    char c = fgetc(fp);

    printf("The 8th character in the file is %c.\n", c);

    fclose(fp);

    return 0;

  }

在这个示例中,我们先打开了一个文件test.txt,然后使用fseek()函数将文件指针移动到文件起始位置加7个字节处,即第8个字节处。然后我们使用fgetc()函数读取该位置的字符,最后输出该字符。输出的结果为:

  The 8th character in the file is H.

2. rewind()

rewind()函数可以将文件指针移动到文件开头位置,其原型如下:

  void rewind(FILE *stream);

简单来说,rewind()函数等价于fseek(stream, 0, SEEK_SET)。

下面我们也以一个示例来说明rewind()函数的使用方法:

  #include

  #include

  int main() {

    FILE *fp = fopen("test.txt", "r");

    if (fp == NULL) {

      printf("File open failed!\n");

      return -1;

    }

    char c = fgetc(fp);

    printf("The first character in the file is %c.\n", c);

    rewind(fp);

    c = fgetc(fp);

    printf("The first character in the file after rewind is %c.\n", c);

    fclose(fp);

    return 0;

  }

在这个示例中,我们先打开了一个文件test.txt,并使用fgetc()函数读取了文件中的第一个字符,并输出该字符。然后使用rewind()函数将文件指针移动到文件开头位置,再读取文件中的第一个字符,并输出该字符。输出的结果为:

  The first character in the file is H.

  The first character in the file after rewind is H.

通过以上两个示例,我们可以看到,使用fseek()和rewind()函数可以在文件中移动文件指针的位置,提高读写操作的灵活性和效率。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复