原创 库函数方式文件编程

2015-3-5 22:37 284 0 分类: MCU/ 嵌入式 文集: Linux应用程序开发学习
库函数方式文件编程的优点:基于C函数库的文件编程是独立于具体的操作系统的,不管是在windows,linux,还是其他的操作系统中,都是使用这些函数。使用库函数进行程序设计可以提高程序的可移植性。
 
流:对于标准的C函数库,他们的操作都是围绕流来进行的。流是一个抽象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。
nr7fjsb6h7uhmli5lad9o623k3_bcd3833229cfd98ddef3d6c6d72c531f1425566198.5005.jpg
 
文件指针:在系统调用方式实现的文件访问中,使用文件描述符(一个非负整数)来指向一个文件。在库函数方式的文件访问中,使用FILE类型来表示一个打开的文件,这个类型中包含了管理文件流的信息。而指向该类型的指针FILE * 则被称之为文件指针。
 

3.1 打开文件

3.1.2 函数原形     FILE *fopen(const char *path, const char *mode);
3.1.3 函数功能     打开文件
3.1.4 所属头文件    
3.1.5 返回值     成功:返回FILE指针 失败:返回NULL
3.1.6 参数说明     path:待打开的文件的路径。     mode:文件打开模式
 

3.2 关闭文件

3.2.1 函数名     fclose
3.2.2 函数原形     int fclose(FILE *fp);
3.2.3 函数功能     关闭打开的文件
3.2.4 所属头文件    
3.2.5 返回值     成功:返回0 失败:返回EOF
3.2.6 参数说明     fp:待关闭的文件的指针
 
 

3.3 读文件

3.3.1 函数名     fread
3.3.2 函数原形     size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
3.3.3 函数功能    从文件中读取数据 
3.3.4 所属头文件    
3.3.5 返回值     成功:返回读取到的数据量 失败:返回0
3.3.6 参数说明     ptr:读取到的数据存放的位置     size:读取的每一份数据的大小    nmemb:需要读取nmemb份数据     stream:待读取的数据流
 

3.4 写文件

3.4.1 函数名     fwrite
3.4.2 函数原形     size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
3.4.3 函数功能     向文件中写入数据
3.4.4 所属头文件    
3.4.5 返回值     成功:返回写入的数据量 失败:返回0
3.4.6 参数说明     ptr:待写入的数据     size:写入的数据块的大小     nmemb:写入的数据块的数量     stream:要写入的文件的数据流
 
 
 

3.5 定位文件

3.5.1 函数名     fseek
3.5.2 函数原形     int fseek(FILE *stream, long offset, int whence);
3.5.3 函数功能     设置文件的位置指针
3.5.4 所属头文件    
3.5.5 返回值     成功:0 失败:-1
3.5.6 参数说明    stream:要定位的文件流 offset:偏移量  whence: 设置起始的文件指针位置
 
小实验:创建一个txt文件,且打印出写进该txt文件中的数据。
#include
int main()
{
    char *buf = "1234567890";
    char buff_read[11];
    FILE *fp;
    fp = fopen("/home/copy_commander/num.txt", "a+");
    fwrite(buf, 1, 10, fp);
    fseek(fp, 0, SEEK_SET);
    fread(buff_read, 1, 10, fp);
    buff_read[10] = "\0";
    printf("%s\n", buff_read);
    fclose(fp);
    return 0;
}
广告

文章评论 0条评论)

登录后参与讨论
相关推荐阅读
潇洒哥 2015-07-08 16:01
位操作符的使用技巧
在C语言编程中,数据的位是可以操作的最小数据单位,理论上可以用“位运算”来完成所有的运算和操作。一般的位操作是用来控制硬件的,或者做数据变换使用,但是,灵活的位操作可以有效地提高程序运行的效...
潇洒哥 2015-04-04 17:39
finish shell分析之底层usart
rt_thread的finsh shell系统不愧是调试的一项利器,它可以除了完成一般shell的功能外,甚至还可以自定义命令。这个对功能单一的嵌入式系统来说是十分可贵的。在此我并不想对finsh...
潇洒哥 2015-04-01 21:29
__main() 和 main()
因为我们通常在BOOTLOADER中都已做好了比较细致的初始化工作,包括代码的搬运,所以我们最好别再调用库函数__main(),因为__main()作为ADS集成好的库函数,会对系统进行初始化设置...
潇洒哥 2015-03-26 22:54
RT-Thread学习之scons篇--解析rtconfig.py文件
rtconfig.py文件,主要用于指定编译器以及安装路径。除此之外,该文件中定义了大量的变量,这些变量包括编译选项,汇编选项,链接选项。   import os # toolchain...
潇洒哥 2015-03-26 22:53
RT-Thread学习之scons篇--SConsruct脚本文件解析
       scons的构建文件名称是统一的都称为SConstruct。其是scons所接受的编译脚本主文件。当然为了方便目录的组织,也允许在各个目录下面存放SConscript, 然后最上面S...
潇洒哥 2015-03-26 22:53
RT-Thread学习之scons篇--SConcript文件解析
SConscript文件是用来指定哪些文件会加入编译。先来分析下BSP主目录下的SConscript文件: import rtconfig Import('RTT_ROOT') fro...
广告
我要评论
0
0
广告
关闭 热点推荐上一条 /1 下一条