linuxC语言之文件操作
学习linux,在编程中文件操作必不可少,今天给大家分享一下linux下C语言的文件操作。
在linux环境下,编程C语言有两种文件操作方式:
系统I/O库:可供操作的函数:open(), read(), write(), lseek(), close()。是操作系统直接提供的一个编程接口,其常用于硬件级别,可以设置读缓冲区,一般没有写缓冲区;
标准I/O库:可供操作的函数:fopen(), fread(), fwrite(), fseek(), fclose(),常用于软件级别,自带读写缓冲区 打开或创建文件open()函数
原型:
int open(constchar* pathname,int flags);
int open(constchar* pathname,int flags,mode_t mode);
参数说明:
pathname:需要打开或需要创建文件的路径;
flags:操作选项
三选一选项:
O_RDONLY:只读模式打开文件
O_WRONLY:只写模式打开文件
O_RDWR:读写模式打开文件
可选项,可与前项进行位于方式:
O_APPEND:在文件末尾以追加方式写入
O_CREAT:若打开的文件不存在,则创建此文件
O_EXCL:测试,若要打开的文件已存在,则返回-1
O_TRUNC:若文件已存在,则删除文件原有内容
mode:若文件已存在,则用八进制表示法指定其权限为mode
返回值:
大于等于0,即文件描述符,表示操作成功;-1表示操作失败。 fopen()函数
原型:
FILE * fopen(const char * path, const char * mode);
参数说明:
path:需要打开或需要创建文件的路径;
mode:
r:只读方式打开文件,要求文件必须已存在
r+:可读写方式打开文件,要求文件必须存在
w: 只写方式打开文件,文件若不存在则创建新文件,若存在则删除其内容
w+:读写方式打开文件,文件若不存在则创建新文件,若存在则删除其内容
a: 只写方式打开文件,以追加方式写数据
a+:读写方式打开文件,以追加方式写数据,以顺序方式读数据
返回值:
非NULL的文件指针,为NULL表示失败 写文件write()函数
原型:
ssize_t write(int fd, void *buf, size_t count)
参数说明:
fd:打开文件时返回的文件描述符
buf:指定写入数据缓冲区首地址
count:写入数据的字节数
返回值:
实际写入的字节数,为-1时表示操作失败 fwrite()函数
原型:
size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
参数说明:
ptr:写入数据的首地址
size:数据块大小
nmemb:数据块个数
stream:文件指针
返回值:
写入的数据块个数 读文件read()函数
原型:
ssize_t read(int fd, void *buf, size_t count)
参数说明:
fd:打开文件时返回的文件描述符
buf:指定读入数据缓冲区首地址
count:读入数据的字节数
返回值:
实际读入的字节数,为-1时表示操作失败 fread()函数
原型:
size_t fread(void *ptr, size_t size, size_t nmemb,FILE *stream);
参数说明:
ptr:读入数据的首地址
size:数据块大小
nmemb:数据块个数
stream:文件指针
返回值:
读入的数据块个数 文件偏移量调整lseek()函数
原型:
off_t lseek(int fd, off_t offset, int whence)
参数说明:
fd:打开文件时返回的文件描述符
offset:相对基准点偏移大小
whence:基准点,可用参数:
SEEK_SET:文件开头处
SEEK_CUR:当前位置处
SEEK_END:文件结尾处
返回值:
当前位置的偏移量,为-1时表示操作失败 fseek()函数
原型:
int fseek(FILE *stream, long offset, int whence)
参数说明:
stream:文件指针
offset:相对基准点偏移大小
whence:基准点,可用参数:
SEEK_SET:文件开头处
SEEK_CUR:当前位置处
SEEK_END:文件结尾处
返回值:
为0表示操作成功,为-1时表示操作失败 文件关闭close()函数
原型:
int close(int fd)
参数说明:
fd:打开文件时返回的文件描述符
返回值:
为0表示操作成功,为-1时表示操作失败 fclose()函数
原型:
int fclose(FILE *fp)
参数说明:
fp:文件指针
返回值:
为0表示操作成功,为-1时表示操作失败 应用举例
为什么很多人只带一个助听器?正常情况下单耳完全失聪或者单耳听力正常还有特殊情况不适合佩戴助听器者佩戴单耳还有一部分老人因为对助听器认识不足由于观念问题或者经济原因选择佩戴单耳双耳出现听力损失佩戴单耳会有很多弊
老人家之前在网上买的助听器总是听起很吵是怎么回事?网上买的助听器听起来很吵是怎么回事你好,如果听力不好,首先建议去医院检查听力不好的原因,如果无法治疗才考虑选配助听器。网上一般售卖的千元左右的助听器基本都是模拟机,原理是所有的声音
有哪些适合家里使用的监控摄像头?亲爱的朋友,家人们,大家好,我是老聂,专注安防监控行业11年2个月,针对你提出的有哪些合适家里使用的监控摄像头?我从监控专业角度为你解答问题问题关键词你所提问到的监控摄像头要合适家
支付宝微信支付迎来新对手!华为支付正式上线移动支付的到来让我们告别了使用现金时代,当下支付宝微信支付已成为人们日常消费中所选择的移动支付,出门一台手机,吃喝玩乐全搞定。近日。华为集团旗下的华为支付在华为钱包内正式上线,这将
iPhone12没话说,6256G直接降1800元,中国用户应该会喜欢就手机的使用寿命来看,我们知道手机界最有代表性的是iPhone,可以说一款iPhone的使用寿命基本都在三年以上,甚至用五六年都没有问题。不过这是针对流畅度而言的,如果针对续航来说
为什么很多苹果老用户都不再考虑苹果了?这几点原因让人难以接受看到标题可能很多人疑惑,苹果手机在国内明明那么火,怎么会有人不会考虑呢,其实还真有,尤其是一些用了几年的苹果手机老用户和步入职场的年轻人,那为什么很多苹果手机老用户,在换下一部手机
用户发布侵权内容,平台需要担责吗?以案说典条文案例解读,让民法典从法律文本走向你我他第三章责任主体的特殊规定第四节网络侵权责任一避风港原则(权责明确,合理避风)法言俗语随着时代的进步,网络世界已经成为社会大众日常活
i茅台APP上线,你申购了吗2022年3月31日000,茅台集团i茅台APP上线,开展为期50天的试运行(至5月19日)。消费者每天9点到10点登陆预约申购,18点查看申购结果。苹果手机i茅台进入界面i茅台运
二度来台英特尔CEO将访台积电二度来台英特尔CEO将访台积电全球芯片供应链正在重塑,业者合纵连横。外电报导,芯片业者过去几年来共耗费一亿美元的游说支出,以期能从联邦政府的逾五百亿美元补助措施分得一杯羹其中,台积
python并发编程进程池在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间。多进程是实现并发的手段之一,需要注意的问题是很明显需要并发执行的
江西锂云母最新进展锂资源持续紧缺,开发国内锂资源迫在眉睫,江西地区锂云母开发引发关注。由于新能源汽车需求持续高涨,对于电池关键原材料锂盐的需求不断提升。我国作为锂盐冶炼正极材料电池制造的全球产业中心