## 其它文件操作函数 - ftell 函数 | 函数声明 | long ftell ( FILE * stream ); | | -------------- | ------------------------------------------------------------ | | 所在文件 | stdio.h | | 函数功能 | 得到流式文件的当前读写位置,其返回值是当前读写位置偏离文件头部的字节数. | | 参数及返回解析 | | | 参数 | FILE * 流文件句柄 | | 返回值 | int 成功,返回当前读写位置偏离文件头部的字节数。失败, 返回-1 | ```c #include int main() { char *str = "123456789"; FILE *fp = fopen("test.txt", "w+"); long cp = ftell(fp); printf("cp = %li\n", cp); // 0 // 写入一个字节 fputc(str[0], fp); cp = ftell(fp); printf("cp = %li\n", cp); // 1 fclose(fp); return 0; } ``` - rewind 函数 | 函数声明 | void rewind ( FILE * stream ); | | -------------------------------------------- | ------------------------------ | | 所在文件 | stdio.h | | 函数功能 将文件指针重新指向一个流的开头。 | | | 参数及返回解析 | | | 参数 | FILE * 流文件句柄 | | 返回值 | void 无返回值 | ```c #include int main() { char *str = "123456789"; FILE *fp = fopen("test.txt", "w+"); long cp = ftell(fp); printf("cp = %li\n", cp); // 0 // 写入一个字节 fputc(str[0], fp); cp = ftell(fp); printf("cp = %li\n", cp); // 1 // 新指向一个流的开头 rewind(fp); cp = ftell(fp); printf("cp = %li\n", cp); // 0 fclose(fp); return 0; } ``` - fseek 函数 | 函数声明 | int fseek ( FILE * stream, long offset, int where); | | -------------- | ------------------------------------------------------ | | 所在文件 | stdio.h | | 函数功能 | 偏移文件指针。 | | 参数及返回解析 | | | 参 数 | FILE * stream 文件句柄 | | | long offset 偏移量 | | | int where 偏移起始位置 | | 返回值 | int 成功返回 0 ,失败返回-1 | - 常用宏 ```c #define SEEK_CUR 1 当前文字 #define SEEK_END 2 文件结尾 #define SEEK_SET 0 文件开头 ``` ```c #include int main() { FILE *fp = fopen("test.txt", "w+"); fputs("123456789", fp); // 将文件指针移动到文件结尾, 并且偏移0个单位 fseek(fp, 0, SEEK_END); int len = ftell(fp); // 计算文件长度 printf("len = %i\n", len); fclose(fp); return 0; } ``` ```c #include int main() { FILE *fp; fp = fopen("file.txt","w+"); fputs("123456789", fp); fseek( fp, 7, SEEK_SET ); fputs("lnj", fp); fclose(fp); return 0; } ``` ### 捐赠支持 项目的发展离不开你的支持,如果 **CNote** 帮助到你打开编程的大门,请作者喝杯咖啡吧 ☕ 后续我们会继续完善更新!加油! [点击捐赠支持作者](https://www.yuque.com/docs/share/25942927-f732-4f94-a670-154a9c7b06d3) ### 联系我 ![](https://cdn.nlark.com/yuque/0/2021/png/12653647/1635664638743-b3515c4e-842f-4a65-8240-bb330e3fe554.png) ### 公众号 如果大家想要实时关注我们更新的文章以及分享的干货的话,可以关注我们的微信公众号“**代码情缘**”。 ![我的公众号](https://cdn.nlark.com/yuque/0/2021/jpeg/12653647/1635665327539-b1156e20-fe8c-430b-9c24-1f3b834942ac.jpeg)