📅  最后修改于: 2023-12-03 15:00:51.465000             🧑  作者: Mango
在C语言中,有两个函数可以在文件中移动指针:fseek()和rewind()。这两个函数看起来很相似,但实际上有一些重要的区别。
fseek()函数用于在文件中移动指针。它的原型如下:
int fseek(FILE *stream, long int offset, int whence);
fseek()函数返回0表示移动成功,返回非零值表示移动失败。
下面是一个使用fseek()函数的例子:
#include <stdio.h>
int main() {
FILE *fp;
fp = fopen("test.txt", "r+");
if (fp == NULL) {
perror("Error opening file");
return(-1);
}
fseek(fp, 10, SEEK_SET);
fputs("This is a test", fp);
fclose(fp);
return 0;
}
上面的例子打开了一个名为test.txt的文件,并在文件中移动指针到偏移量为10的位置,并在此位置写入了一个字符串。最后,文件被关闭。
rewind()函数用于将文件指针重置到文件开头。它的原型如下:
void rewind(FILE *stream);
rewind()函数没有返回值。
下面是一个使用rewind()函数的例子:
#include <stdio.h>
int main() {
FILE *fp;
char c;
fp = fopen("test.txt", "r");
if (fp == NULL) {
perror("Error opening file");
return(-1);
}
while ((c = fgetc(fp)) != EOF)
printf("%c", c);
rewind(fp);
printf("\n");
while ((c = fgetc(fp)) != EOF)
printf("%c", c);
fclose(fp);
return 0;
}
上面的例子打开了一个名为test.txt的文件,并读取了文件的内容。然后,文件指针被重置到文件开头,并再次读取了文件的内容。最后,文件被关闭。
fseek()和rewind()函数在文件指针操作中非常有用。它们都可以在文件中移动指针,但fseek()函数更为强大,因为它可以在文件中任意位置移动指针。在使用这两个函数时,务必小心,以避免破坏文件。