linux应用编程学习(3)库函数文件类
来源:互联网 发布:kmp算法next数组怎么求 编辑:程序博客网 时间:2024/05/17 03:02
三、库函数文件类
流:对于标准的C函数库,它们的操作都是围绕流来进行的。流是一个抽象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。
文件指针:在系统调用方式实现的文件访问中,使用文件描述符(一个整数)来指向一个文件。在库函数方式的文件访问中,使用FILE类型来表示一个打开的文件,这个类型中包含了管理文件流的信息。而指向该类型的指针FILE* 则被称之为文件指针。
3.1.打开文件: FILE *fopen(const char *path, const char *mode);
打开文件
所属头文件: stdio.h
返回值: 成功:返回文件指针 失败:NULL
参数说明: path:指定打开的文件名字(含路径)
mode:文件打开模式 r、r+、w、w+、a、a+
mod是字符串,需要加双引号
- #include <stdio.h>
- void main()
- {
- FILE *fp;
- char *path = "./test.c";
- fp = fopen(path, "w+");
- if(fp < 0)
- printf("file fopen failed!\n");
- }
3.2.关闭文件: int fclose(FILE *fp);
关闭一个文件流
所属头文件: stdio.h
返回值: 成功:0 失败:EOF
参数说明: fp:待关闭的文件指针
- #include <stdio.h>
- void main()
- {
- FILE *fp;
- char *path = "./test";
- fp = fopen(path, "w+");
- if(fp < 0)
- printf("file fopen failed!\n");
- close(fp);
- }
3.3.读文件: size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream);
从文件中读取数据
所属头文件:
返回值: 成功:返回读取到的数据量 失败:0
参数说明: ptr:文件读取出来后的存放位置
size:读取每块数据的大小
nmemb:读取的数据块数
stream:指向要读取的文件
w+会对存在的文件清空内容,导致读取有误:
- #include <stdio.h>
- void main()
- {
- FILE *fp;
- char buf[20];
- size_t ret;
- fp = fopen("./test.c","r+");
- if(fp == 0)
- {
- printf("file fopen failed!\n");
- return;
- }
- ret = fread(buf,5,2,fp);
- if(ret == 0)
- printf("file fread failed!\n");
- else
- {
- buf[10] = '\0';
- printf("now we read %s\n",buf);
- }
- fclose(fp);
- }
3.4.写文件: size_t fwrite(const void *ptr,size_t size,size_t nmemb,FILE *stream);
向文件写入
所属头文件: stdio.h
返回值: 成功:返回成功写入的数据量 失败、达到文件结尾:0
参数说明: Ptr:要写入数据的文件指针
Size:每块数据的大小
Nmemb:数据的块数
Stream:指向要写入的文件
- #include <stdio.h>
- void main()
- {
- FILE *fp;
- size_t ret;
- char *buf = "this is my string.";
- fp = fopen("./test.c", "w+");
- if(fp == NULL)
- printf("file fopen failed!\n");
- ret = fwrite(buf, 18, 1, fp);
- if(ret == 0)
- printf("file fwriet failed!\n");
- fclose(fp);
- }
3.5.定位文件 Int fseek(FILE *stream,long offset, int whence);
设置位文件位置指针
所属头文件: stdio.h
返回值: 成功:0 失败:-1
参数说明: Stream:设置指针位置的文件指针
Offset:偏移量;正数往后,负数往前
Whence:设置指针位置
SEEK_SET 文件开头
SEEK_CUR:当前位置
SEKK_END:文件末尾
- #include <stdio.h>
- void main()
- {
- FILE *fp;
- char *buf_w = "this is my string.";
- char buf_r[10];
- size_t ret;
- fp = fopen("./test.c", "r+");
- if(fp == NULL)
- {
- printf("file fopen failed!\n");
- return;
- }
-
- ret = fwrite(buf_w, 18, 1, fp);
- if(ret == 0)
- {
- printf("file fwrite failed!\n");
- return;
- }
- fseek(fp,0,SEEK_SET);
- ret = fread(buf_r,9,1,fp);
- if(ret == 0)
- {
- printf("file fread failed!\n");
- return;
- }
- else
- {
- buf_r[9] = '\0';
- printf("fread buf is \"%s\"\n",buf_r);
- }
- close(fp);
- }
上一篇:linux应用编程学习(2)系统调用文件类
下一篇:linux应用编程学习(4)多进程编程
- linux 常见服务端口
- xmanager 2.0 for linux配置
- 【ROOTFS搭建】busybox的httpd...
- openwrt中luci学习笔记
- 什么是shell
- linux dhcp peizhi roc
- 关于Unix文件的软链接
- 求教这个命令什么意思,我是新...
- sed -e "/grep/d" 是什么意思...
- 谁能够帮我解决LINUX 2.6 10...
- linux应用编程学习(3)库函数文件类
- Linux学习之库函数方式文件编程
- 【Linux库函数编程】文件编程
- Linux库函数文件编程类整理
- LINUX文件编程-库函数的文件访问
- linux应用编程笔记(6)库函数方式实现文件复制编程
- linux 应用程序设计基础--库函数访问文件
- 2、linux文件编程(库函数)
- linux应用编程学习(2)系统调用文件类
- Linux文件编程,时间编程——库函数-文件访问
- linux文件编程-C库函数使用以及时间编程
- 基于库函数的文件类编程
- 文件编程(库函数调用)
- 文件编程之库函数
- 库函数方式文件编程
- 库函数文件编程练习
- Linux文件编程之--库函数pk系统调用函数
- Linux应用程序开发笔记->文件编程之库函数
- linux应用编程学习(1)时间类
- 古代文化常识
- linux应用编程学习(2)系统调用文件类
- JAVA基础【3.7】《Java核心技术1》Java的基本程序设计结构-输入输出
- 树莓派开发之路1.11.2
- linux应用编程学习(3)库函数文件类
- eclipse中tomcat自动部署时自动停止问题processWorkerExit(w, completedAbruptly)
- linux应用编程学习(4)多进程编程
- XSCJ数据库样本数据
- MongoDB学习笔记(二)MongoDB常见操作
- make: *** [.tmp_vmlinux1] 错误 1
- linux内核链表学习出错
- 安卓系统:在SD卡上新建一个文件file.txt,并将经纬度和时间数据写入
- linux内核链表函数学习