基础IO-文件IO操作
目录
1.C语言文件IO相关操作(库函数IO接口)
2. 系统调用IO接口
1.C语言文件IO相关操作(库函数IO接口)
fopen--打开文件,返回一个文件的操作句柄,有了句柄才能对指定的文件进行操作。
FILE *fopen(char *pathname, char *mode);
参数说明:
pathname:文件的路径
mode:文件的打开方式
r 只读打开(文件不存在会报错)
w 只写打开(文件不存在则创建,存在则截断长度为0,丢弃原有内容)
a 追加写打开(文件不存在则创建,存在则写入数据总是写入到文件末尾)
r+ 读写打开(文件不存在会报错)
w+ 读写打开(文件不存在则创建,存在则截断长度为0,丢弃原有内容)
a+ 读写打开(文件不存在则创建,存在则写入数据总是写入到文件末尾)
b 以二进制形式打开(默认不使用b,则使用的是文本方式打开,对一些特殊字符的处理有区别,例如:\n->\r\n)以文本形式打开文件,有可能会造成读到的数据与文件实际的数据有差别。
fwrite--向文件写入数据
size_t fwrite(char *data,int bsize, int nmem,FILE *fp);
参数说明:
data:指向保存读写数据的内存的指针,可以指向数组,变量,结构体等
bsize:表示每个数据块的字节数
nmem:表示要读写的数据块的个数
fp:表示文件指针
fread--从文件中读取数据
size_t fread(char *buf,int bsize,int nmem,FILE *fp);
fclose--关闭文件
int fclose(FILE *fp);
fseek--跳转当前的读写位置
int fseek(FILE *fp, int offset, int whence)
参数说明:
whence:文件读写位置的起始偏移位置
SEEK_SET 文件的起始位置
SEEK_CUR 当前的读写位置
SEEK_END 文件的末尾位置
实例:
#include <stdio.h>
#include <string.h>int main(){FILE *fp=fopen("./bite.txt","w+");//以读写的方式打开一个文件if(fp==NULL){perror("fopen errror");return -1;}char *data="linux so easy!";size_t ret=fwrite(data,1,strlen(data),fp);//向文件中写入数据if(ret!=strlen(data)){perror("fwrite error");fclose(fp);return -1;}fseek(fp,0,SEEK_SET);//由于前边w+打开文件写入数据读写位置变到文尾,因此将当前的读写位置跳 // 转到文首char buf[1024]={0};ret=fread(buf,1,1023,fp);//从文件中读取数据if(ret==0) {if(feof(fp)){printf("end of file");}if(ferror(fp)){perror("fread error");fclose(fp);return -1;}}printf("%s\n",buf);//在标准输出中打印读到的数据fclose(fp);//关闭文件return 0;}
结果:
2. 系统调用IO接口
接口:open write read Iseek close
int open(char *pathname, int flag, int mode);--打开文件
参数说明:
pathname:要打开的文件路径名
flag:文件的打开方式,打开方式决定了能够对文件进行什么样的操作
必选项:O_RDONLY(只读) O_WRONLY(只写) O_RDWR(读写),只能选择其一,不能同时使用
可选项:O_CREAT -文件不存在则创建 O_TRUNC -截断文件,丢弃原有数据
O_APPEND -追加写
例"w+" -- O_RDWR|O_CREAT|O_TRUNC
mode:当O_CREAT被使用时,就一定要设置第三个参数mode--用于设定被创建文件的访问权限0664
0664 --需要特别注意,前边的0不能省略,会涉及到特殊权限位的设置
给定的权限不一定是实际得到的权限,实际的文件权限会受到umask的影响
实际得到的权限:给定的权限&(~umask)
返回值:成功返回文件描述符fd,失败返回-1
ssize_t write(int fd, char *buf,size_t len);--向文件中写入数据
参数说明:
fd:open打开文件时返回的操作句柄--文件描述符
buf:要写入文件的数据的所在空间首地址
len:要写入的数据长度(以字节为单位)
返回值:成功返回实际读取到的数据长度;失败返回-1
ssize_t read(int fd, char *buf,size_t len);--从文件中读取数据
参数说明:
fd:open打开文件时返回的文件描述符
buf:一开空间的首地址,用于存放读取到的数据
len:要读取的数据长度(这个长度不能大于buf空间的大小,避免越界)
返回值:成功返回实际读取到的数据长度;0表示读到了文件末尾;失败返回-1
off_t Iseek(int fd, off_t offset, int whence);--跳转当前读写位置
参数说明:
fd:文件描述符
offset:偏移量
whence:偏移起始位置 SEEK_SET; SEEK_CUR; SEEK_END;
返回值:当跳转后,读写位置相对于文件起始位置的偏移量
int close(int fd);--关闭文件
参数说明:
fd:文件描述符
实例:
#include <stdio.h>#include <fcntl.h>#include <string.h>#include <unistd.h>int main(){int fd=open("./bite.txt",O_CREAT|O_RDWR|O_TRUNC,0664);if(fd<0){perror("open error");return -1;}char *data="i like linux!";ssize_t ret=write(fd,data,strlen(data));if(ret<0){perror("write error");close(fd);return -1;}lseek(fd,0,SEEK_SET);char buf[1024]={0};ret=read(fd,buf,1023);if(ret<0){perror("read error");close(fd);return -1;}printf("%s\n",buf); close(fd);return 0;}
结果:
基础IO-文件IO操作相关推荐
- Linux c语言中的IO -- 文件IO
文章目录 1. 文件IO 2. 文件描述符 什么是文件描述符?文件描述符何时产生? 3. 文件IO常用函数 open() close() 对比fopen()与open()打开文件权限 read() w ...
- Linux基础(6)--文件IO操作
文件IO操作 1. open打开操作 2. close关闭操作 3. creat创建操作 4. write写操作 5. read读操作 Linux下一切皆文件,所以文件IO是很重要的也是很基础的操作. ...
- C++基础实例-文件Io等(5)
基本输入读取 #if 0 /*读写文件cin.getline*/ #include<iostream> #include<stdio.h> #include<string ...
- linux文件IO——文件IO介绍
文章目录 1.文件IO和标准IO区别 2.什么是文件IO 3.文件描述符 4.open函数 5.close函数 1.文件IO和标准IO区别 \qquad标准IO遵从ANSIC,文件IO遵从POSIX: ...
- python 基础之文件读操作
创建一个名为'尘曦'的文件内容如下 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储. ...
- Python基础灬文件常用操作
文件常用操作 文件内建函数和方法 open() :打开文件 read():输入 readline():输入一行 seek():文件内移动 write():输出 close():关闭文件 写文件writ ...
- python文件对象提供了3个读方法、分别是-python3基础之文件对象操作
1.向文本文件中写入内容 s = 'Hello world 文本文件的读取方法 文本文件的写入方法 ' # 需要写入文件的字符串 print('显示需要写入的内容: {0:s}'.format(s)) ...
- Python学习入门基础:文件读写操作、模块和包、异常
一.文件 文件的概念 文件的基本操作 文件/文件夹的常用操作 文本文件的编码方式 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多 ...
- Python基础:文件的操作
一.python可以在不导入任何模块的情况下对文件完成读.写.追加,替换(稍复杂). 二.打开文件: 1.f = open('text.txt') 这种方式打开,操作完后需要使用f.colse()关闭 ...
- Python 基础 CSV文件的操作
1.CSV文件的打开 CSV文件可以使用open命令打开,但是一定要用close命令关闭. 也可以用with语句打开,操作结束后,自动关闭. with open(文件路径字符串,模式字符) as 文件 ...
最新文章
- 1. 训练集、开发集、测试集(Train/Dev/Test sets)
- oracle数据库存储结构语句,oracle基本语句(第五章、数据库逻辑存储结构管理)...
- Diango博客--2.博客从“裸奔”到“有皮肤”
- 【Java中级篇】基于jxl读写Excel文件遇到的问题
- html lineheight div,html – Chrome上的文本输入:line-height似乎有最小值
- 旗舰杀手!红米旗舰定名 干翻全场?
- javascript数据结构与算法 --- 高级排序算法
- cocos2d-x学习之添加显示文字
- 三维球体换算到二维_单图像三维重建、2D到3D风格迁移和3D DeepDream
- 社交APP软件开发流程解析
- MATLAB常见语法错误
- LoadRunner教程(13)-LoadRunner 服务水平协议
- Windows MongoDB下载 安装以及配置(一条龙到底)
- Matlab画一半实线一半虚线,PPT中怎么绘制一个一半实线一半虚线的圆?
- 计算机利用if函数总评,Excel中IF函数的嵌套用法_
- Linux alarm闹钟函数
- 2021年数据泄露成本报告解读
- opensuse12.2 KDE 使用环境配置
- 时光机穿梭(管理修改)
- 齐聚绿城 | 锦江都城酒店聚焦中高端酒店投资新方向