目录

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操作相关推荐

  1. Linux c语言中的IO -- 文件IO

    文章目录 1. 文件IO 2. 文件描述符 什么是文件描述符?文件描述符何时产生? 3. 文件IO常用函数 open() close() 对比fopen()与open()打开文件权限 read() w ...

  2. Linux基础(6)--文件IO操作

    文件IO操作 1. open打开操作 2. close关闭操作 3. creat创建操作 4. write写操作 5. read读操作 Linux下一切皆文件,所以文件IO是很重要的也是很基础的操作. ...

  3. C++基础实例-文件Io等(5)

    基本输入读取 #if 0 /*读写文件cin.getline*/ #include<iostream> #include<stdio.h> #include<string ...

  4. linux文件IO——文件IO介绍

    文章目录 1.文件IO和标准IO区别 2.什么是文件IO 3.文件描述符 4.open函数 5.close函数 1.文件IO和标准IO区别 \qquad标准IO遵从ANSIC,文件IO遵从POSIX: ...

  5. python 基础之文件读操作

    创建一个名为'尘曦'的文件内容如下 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储. ...

  6. Python基础灬文件常用操作

    文件常用操作 文件内建函数和方法 open() :打开文件 read():输入 readline():输入一行 seek():文件内移动 write():输出 close():关闭文件 写文件writ ...

  7. python文件对象提供了3个读方法、分别是-python3基础之文件对象操作

    1.向文本文件中写入内容 s = 'Hello world 文本文件的读取方法 文本文件的写入方法 ' # 需要写入文件的字符串 print('显示需要写入的内容: {0:s}'.format(s)) ...

  8. Python学习入门基础:文件读写操作、模块和包、异常

    一.文件 文件的概念 文件的基本操作 文件/文件夹的常用操作 文本文件的编码方式 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多 ...

  9. Python基础:文件的操作

    一.python可以在不导入任何模块的情况下对文件完成读.写.追加,替换(稍复杂). 二.打开文件: 1.f = open('text.txt') 这种方式打开,操作完后需要使用f.colse()关闭 ...

  10. Python 基础 CSV文件的操作

    1.CSV文件的打开 CSV文件可以使用open命令打开,但是一定要用close命令关闭. 也可以用with语句打开,操作结束后,自动关闭. with open(文件路径字符串,模式字符) as 文件 ...

最新文章

  1. 1. 训练集、开发集、测试集(Train/Dev/Test sets)
  2. oracle数据库存储结构语句,oracle基本语句(第五章、数据库逻辑存储结构管理)...
  3. Diango博客--2.博客从“裸奔”到“有皮肤”
  4. 【Java中级篇】基于jxl读写Excel文件遇到的问题
  5. html lineheight div,html – Chrome上的文本输入:line-height似乎有最小值
  6. 旗舰杀手!红米旗舰定名 干翻全场?
  7. javascript数据结构与算法 --- 高级排序算法
  8. cocos2d-x学习之添加显示文字
  9. 三维球体换算到二维_单图像三维重建、2D到3D风格迁移和3D DeepDream
  10. 社交APP软件开发流程解析
  11. MATLAB常见语法错误
  12. LoadRunner教程(13)-LoadRunner 服务水平协议
  13. Windows MongoDB下载 安装以及配置(一条龙到底)
  14. Matlab画一半实线一半虚线,PPT中怎么绘制一个一半实线一半虚线的圆?
  15. 计算机利用if函数总评,Excel中IF函数的嵌套用法_
  16. Linux alarm闹钟函数
  17. 2021年数据泄露成本报告解读
  18. opensuse12.2 KDE 使用环境配置
  19. 时光机穿梭(管理修改)
  20. 齐聚绿城 | 锦江都城酒店聚焦中高端酒店投资新方向

热门文章

  1. 数据库设计的六个步骤
  2. 修改input输入框的样式
  3. 1、netty的简单认识
  4. pythonic_Pythonic 是什么意思?
  5. 【Idea】删除jar包方式
  6. p80 红蓝对抗-AWD 模式准备攻防监控批量
  7. 【UE4 第一人称射击游戏】47-修改AI为僵尸样貌
  8. ZebecSolana基金会AMA圆满召开,Lily Liu盛赞Zebec
  9. ipset+iptables封禁以及自动解封IP
  10. FPGA中双向IO端口的应用