C 语言标准库函数 - fgetpos()
C 语言标准库 <stdio.h> 函数 int fgetpos(FILE stream, fpos_t pos) 获取流 stream 的当前文件位置,并把它写入到 pos 。
头文件
#include <stdio.h>
函数原型
下面是 fgetpos() 函数的原型
int fgetpos(FILE *stream, fpos_t *pos)
参数
- stream : 这是指向 FILE 对象的指针,该 FILE 对象标识了流
- pos : 这是指向 fpos_t 对象的指针
返回值
- 如果成功,该函数返回 0
- 如果发生错误,则返回非零值
范例
下面的范例演示了 fgetpos() 函数的用法。
/** * file: main.c * author: 简单教程(www.twle.cn) * * Copyright © 2015-2065 www.twle.cn. All rights reserved. */ #include <stdio.h> int main () { FILE *fp; fpos_t position; fp = fopen("demo.txt","w+"); fgetpos(fp, &position); fputs("Hello, 简单教程!", fp); fsetpos(fp, &position); fputs("这将覆盖之前的内容\n简单教程,简单编程\n", fp); fclose(fp); return(0); }
编译运行以上代码,将创建一个文件 demo.txt ,它的内容如下
这将覆盖之前的内容 简单教程,简单编程
- 首先我们使用 fgetpos() 函数获取文件的初始位置
- 接着我们向文件写入 Hello, 简单教程!
- 然后我们使用 fsetpos() 函数来重置写指针到文件的开头,
现在让我们使用下面的程序查看上面文件的内容
/** * file: main.c * author: 简单教程(www.twle.cn) * * Copyright © 2015-2065 www.twle.cn. All rights reserved. */ #include <stdio.h> int main () { FILE *fp; int c; int n = 0; fp = fopen("demo.txt","r"); while(1) { c = fgetc(fp); if( feof(fp) ) { break ; } printf("%c", c); } fclose(fp); printf("\n"); return(0); }
编译运行以上程序,输出结果如下
$ gcc main.c && ./a.out
这将覆盖之前的内容
简单教程,简单编程