在C/C++中使用fseek()函数
时间:2020-02-23 14:29:57 来源:igfitidea点击:
在本文中,我们将介绍如何在C/C++中使用fseek()函数。
fseek()是遍历文件的非常有用的函数。
通过移动文件指针,我们可以"搜索"到不同的位置。
这使我们能够控制其中可以读写文件。
让我们使用一些说明性示例来看看如何使用此功能!
C/C++中fseek()的基本语法
fseek()函数将根据我们提供的选项将文件指针移至文件。
该功能存在于<stdio.h>头文件中。
该函数的原型如下:
#include <stdio.h> int fseek(FILE* fp, int offset, int position);
通常,如果要移动指针,则需要指定指针将从其开始移动的起始位置("偏移")!
有三种选择"位置"的选项,您可以其中使用"偏移"来移动指针。
其中" position"可以采用以下宏值:
SEEK_SET->我们将初始位置放置在文件的开头,然后从那里开始移动。
SEEK_CUR->初始位置在现有文件指针的当前位置。
SEEK_END->我们将初始位置放在文件末尾。
如果将指针从该位置移开,将到达" EOF"。
如果函数成功执行,它将返回0。
否则,它将返回非零值。
注意:如果使用的是" SEEK_END",则"偏移"位置是向后测量的,因此我们将从文件末尾开始!
例如,如果您尝试寻找一个不存在的职位,它将失败!
现在我们已经介绍了基本语法,现在让我们使用" fseek()"来看一些示例。
对于整个演示,我们将使用具有以下内容的sample.txt文件:
Hello from theitroad This is a sample file This is the last line.
在C/C++中使用fseek()–一些示例
在第一个示例中,我们将使用fseek()
和fread()
来从现有文件中进行读取。
我们将指针移到文件的开头,然后将偏移量放置在5个位置上。
偏移= 5
#include <stdio.h> int main() { //Open the file FILE* fp = fopen("sample.txt", "r"); //Move the pointer to the start of the file //And set offset as 5 fseek(fp, 5, SEEK_SET); char buffer[512]; //Read from the file using fread() fread(buffer, sizeof(buffer), sizeof(char), fp); printf("File contains: %s\n", buffer); //Close the file fclose(fp); return 0; }
输出
File contains: from theitroad This is a sample file This is the last line.
如您所见,它仅从头5个字符之后的位置5开始读取。
所以我们看不到"你好"
现在,我们将使用" SEEK_END"将指针移到末尾。
最后,使用fwrite()
,将附加到同一文件!
#include <stdio.h> int main() { //Open the file for writing FILE* fp = fopen("sample.txt", "a"); //Move the pointer to the end of the file fseek(fp, 0, SEEK_END); char text[] = "This is some appended text"; //Write to the file using fwrite() fwrite(text, sizeof(buffer), sizeof(char), fp); printf("Appended:%s to the file!\n", text); //Close the file fclose(fp); return 0; }
输出
Hello from theitroad This is a sample file This is the last line. This is some appended text