基于库函数的文件类编程
来源:互联网 发布:成都初级u3d程序员工资 编辑:程序博客网 时间:2024/05/20 11:33
库函数编程优点:
基于C函数库的文件编程是独立于具体的操作系统平台的,不管是在Windows、Linux还是其他的操作系统中,都是使用这些函数。使用库函数进行程序设计可提高程序的可移植性。
流的概念:
对于标准的C函数库,它们的操作都是围绕“流”来进行的。流是一个抽象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。
文件指针:
在系统调用方式实现的文件访问中,使用文件描述符(一个整数)来指向一个文件。在库函数方式的文件访问中,使用FILE类型来表示一个打开的文件,这个类型中包含了管理文件流的信息。而指向该类型的指针 FILE* 则被称之为文件指针。
打开文件
函数原形:
FILE *fopen(const char *path, const char *mode);
函数功能:
打开文件
所属头文件:
#include <stdio.h>
返回值:
成功打开,返回文件指针;打开失败,返回空指针。
参数说明:
path:指定文件打开的路径,包含文件名。
mode:指明文件打开的模式。r,r+,w,w+,a,a+。
注意:这两个参数都是字符串,都要加上双引号。
关闭文件
函数原形:
int fclose(FILE *fp);
函数功能:
关闭一个打开的文件流
所属头文件:
#include <stdio.h>
返回值:
关闭成功,返回0;关闭失败,返回EOF。EOF是一个宏定义。
参数说明:
fp:打开的文件流。
读文件
函数原形:
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
函数功能:
从打开的文件流中读取数据。
所属头文件:
#include <stdio.h>
返回值:
若读成功,返回读出来的数据单元的数量,注意不是字节数目;若读失败,返回0。
参数说明:
ptr:读出来的数据存放的地址。
size:读出来的数据每个单元有多少字节。
nmemb:读出来的数据有多少单元。
stream:指向要读取的文件,文件流指针fp。
写文件
函数原形:
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
函数功能:
向文件中写入数据。
所属头文件:
#include <stdio.h>
返回值:
若读成功,返回读出来的数据单元的数量,注意不是字节数目;若读失败,返回0。
参数说明:
ptr:写入的数据存放的地址。
size:写入的数据每个单元有多少字节。
nmemb:写入的数据有多少单元。
stream:指向要写入的文件,文件流指针fp。
定位文件
函数原形:
int fseek(FILE *stream, long offset, int whence);
函数功能:
重新定位文件流指向的文件中的位置指针的位置。
所属头文件:
#include <stdio.h>
返回值:
定位成功,返回0;定位失败,返回-1.
参数说明:
stream:指向的文件流
offset:所需要的位置指针的位置偏移,若为正数则向后移,若为负数则向前移。
whence:以下三种选一种:
SEEK_SET:将指针位置设置为offset的位置。
SEEK_CUR:将指针位置设置为当前位置加上offset的位置。
SEEK_END:将指针位置设置为文件结尾加上offset的位置。
例程:
* 本文件是通过库函数方式进行文件编程 */#include <stdio.h>void main(){ int a; int count_read; int count_write; int count_seek; char buf_read[512]; char buf_write[512] = "1234567890987654321"; //打开文件 FILE *fp; fp = fopen("./test.c","w+"); if (fp != NULL) printf("open successfully.\n"); //写文件 count_write = fwrite(buf_write, 2, 5, fp); printf("the write number is %d.\n", count_write); //定位文件位置指针 count_seek = fseek(fp, 0, SEEK_SET); if (count_seek == 0) printf("seek successfully.\n"); //读文件 count_read = fread(buf_read, 2, 5, fp); buf_read[10] = '\0'; printf("read buffer is %s, the number is %d.\n",buf_read, count_read); //关闭文件 a = fclose(fp); if (a == 0) printf("close successfully.\n");}
- 基于库函数的文件类编程
- LINUX文件编程-库函数的文件访问
- Linux库函数文件编程类整理
- 文件编程(库函数调用)
- 文件编程之库函数
- 库函数方式文件编程
- 库函数文件编程练习
- 基于stm32的热释传感器模块(库函数编程)
- 【Linux库函数编程】文件编程
- 基于系统调用的文件类编程
- 文件编程:库函数fopen打开
- 文件编程之库函数调用
- 文件编程之库函数方式
- 04-库函数方式文件编程
- 文件编程之C库函数
- linux应用编程学习(3)库函数文件类
- 带缓存的文件编程API,库函数自带的文件编程函数
- 一个基于mysql库函数的自动分页类
- ScreenUtils
- 将一个对象集合按照对象的某个字段排序
- Swift元组的创建--使用
- canvas汉字验证码
- 常见浏览器兼容性问题与解决方案
- 基于库函数的文件类编程
- java零碎知识点总结 2:IO 流 --------2 RandomAccessFile
- gcc安装教程(windows版本)
- 深入理解计算机系统(4)-- 整数和浮点数
- Activity启动流程分析(基于android 5.1)
- Java虚拟机详解03----常用JVM配置参数
- YOLO直播福利2017最新房间号大全
- LintCode422:最后一个单词的长度
- 在Linux用libcurl.a在链接的时候出错