1、【第5章】文件及IO操作邹昕光哈尔滨工业大学自动化测试与控制研究所2012课程内容嵌入式系统文件访问的需求基本IO操作函数带缓冲的文件IO操作函数高级文件IO操作嵌入式系统文件访问需求配置文件能给嵌入式系统应用带来灵活性;环境参数;常量值;用户偏好;嵌入式系统采集的数据可以以文件形式存储;数据采集;事件记录;错误导出。基本IO操作函数openwritereadclose头文件openint open(const char*filename,int flags,mode_t mode)打开一个文件;【参数】filename:待打开文件的文件名;flags:文件打开的方式;mode:文件访问权限【
2、返回值】如果打开成功,返回文件描述符;如果打开失败,ERROR;openflagsO_RDONLY 以只读方式打开;O_WRONLY 以只写方式打开;O_RDWR 以读写方式打开;O_CREATE 如果文件不存在则创建文件;O_APPEND 打开后保证文件偏移指针置于文件位,对文件写操作总是在文件后增加内容。对设备不起作用。O_TRUNC 如果文件是正规文件,则打开后文件长度变为0,。对设备不起作用。readint read(int fd,char*buffer,size_t maxbytes)从文件或设备中读取数据;【参数】fd:文件描述符;buffer:指向接收数据缓存的指针;maxbyt
3、es:读入缓存的最大数据量【返回值】成功返回实际读取的字节数,小于等于maxbytes;如果读到文件尾返回0;失败返回ERROR;writeint write(int fd,char*buffer,size_t nbytes)向文件中写入数据;【参数】fd:文件描述符;buffer:指向待写入数据缓存的指针;nbytes:写入数据的长度【返回值】成功返回写入的字节数(对于正规文件,返回字节数总是等于nbytes),否则出错;失败返回ERROR;closeSTATUS close(int fd)关闭文件;【参数】fd:文件描述符;【返回值】成功,返回底层驱动函数的状态;失败,返回ERROR;io
4、ctlint ioctl(int fd,int function,)指向IO控制功能;【参数】fd:文件描述符;function:功能码;【返回值】成功,返回底层驱动函数的状态;失败,返回ERROR;例子writeFileDemoreadFileDemoioctlDemo带缓冲的文件IO操作函数C-Runtime Library提供一套文件操作函数;使用时需要包含头文件常用文件操作函数fopenfclosefputsfgetsfreadfwrite文件操作函数常用文件操作函数(续)fseekfeofferrorperrorfopenFILE*fopen(const char*filename,
5、const char*mode)打开一个文件;【参数】filename:待打开文件的文件名;mode:文件打开的方式;【返回值】如果打开成功,返回指向打开文件的指针;如果打开失败,返回值为NULL,并设置全局变量errno为EINVAL;fopen【说明】常用的mode值“r”将文件以读方式打开,如果文件不存在或找不到,调用失败;“w”将文件以写方式打开,如果文件存在,则文件原来的内容被清空;如果文件不存在,则创建文件;“t”以文本文件方式打开;“b”以二进制文件方式打开fopen【示例】FILE*stream1=NULL;FILE*stream2=NULL;stream1=fopen(“te
6、xtfile.txt”,“wt”);stream2=fopen(binfile.bin,rb);fcloseint fclose(FILE*stream)关闭文件【参数】stream:指向待关闭文件的指针;【返回值】如果成功关闭返回0;如果关闭失败返回EOF。fclose【示例】fclose(stream1);fclose(stream2);fputsint fputs(const char*str,FILE*stream)将一个字符串写入文件;【参数】str:待写入的字符串;stream:指向打开文件的指针;【返回值】如果成功返回一个非负值;如果失败返回EOF。fputs【示例】fputs(
7、“Embedded System Configurationsn”,stream);fgetschar*fgets(char*str,int n,FILE*stream)从文件中读出一个字符串;【参数】str:存储读出的字符串;n:期望读出的最大字符数;stream:指向打开文件的指针;【返回值】成功调用返回str;调用失败或遇到文件尾返回NULL;fgets【说明】fgets试图读入n个字符;fgets停止读取的判断条件为如果遇到换行符;如果读到文件尾;如果读到n-1个字符;在读到的字符串后在添加结束符0。fgets【示例】打印5行配置信息;假定每行配置信息的字符数不超过100字节。char config100;int itemCount=0;while(!feof(stream)fgets(config,100,stream);if(ferror(stream)perror(read failed);break;if(itemCount tv_sec=0&pTimeOut-tv_usec=0;不等待;pTimeOut-tv_sec!=0|pTimeOut-tv_usec!=0;等待指定的秒数和微妙数。例子noSelectDemoselectDemo
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1