unix文件操作函数
1. fopen函数
#include <stdio.h>
FILE *fopen(const char *path, const char *mode)
返回:文件顺利打开后,指向该流的文件就会被返回。如何文件打开失败则返回NULL,并把错误代码存在 errno 中。
参数说明:
mode: 1)r 以只读方式打开文件,该文件必须存在。
2) r+ 以可读写方式打开文件,该文件必须存在。
3) rb+ 以读写打开一个二进制文件,允许读写数据,文件必须存在。
4) rw+ 打开一个文本文件,允许读和写。
5) w 打开只写文件,若文件存在则文件长度清为0,即该文件内容消失,若文件不存在则创建该文件。
6) w+ 打开可读写文件,若文件存在则文件长度清为0,即文件文件内容会消失。若文件不存在则创建文件文件。
7) a 以附加的方式打开只写文件,若文件不存在,则会创建文件文件,如果文件存在,则写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
8) a+ 以附加的方式打开可读写文件。若文件不存在,则会创建该文件,如果文件存在,则写入的数据 会被添加到文件尾,即文件碑的内容会被保留。(原来的EOF符不保留)
9) wb 只写打开或新建 一个二进制文件。只允许写数据。
10)wb+ 读写打开或新建一个二进制文件;只允许写数据。
11)ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
12)at+ 打开一个文件文件
总结:a--append,添加新内容到文件尾,删除原文件的EOF。
t--打开的文件的类型是文本文件,
+--表示对文件既可以读也可以写。
fopen建立的新文件会具有 S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH(0666)权限。
二进制文件和文本文件的区别:
1. 在windows系统中,文本模式下,文件以“\r\n”代表换行,若以文件模式打开文件,并用fputs等函数写入换行符“\n”时,函数会自动在“\n”前面加上"\r"。即实际写入文件的是“\r\n”.
2. 在类UNIX/LINIX系统中文本模式下,文件以“\n”代表换行。所以unix在文本模式和二进制模式下并无区别。
注意:在文件操作时
1)在定义文件指针时,要将文件指针指向空;如FILE *fp = NULL;
2)文件操作完成后,需要将文件关闭,一定要注意,否则会造成文件所占用的内存泄漏和在下次访问时出现问题。
3)文件关闭后,需要将文件指针指向空。这样做会防止出现游离指针,而对整个工程造成不必要的麻烦;如:fp = NULL;
#include <stdio.h>
int fclose(FILE *steream)
关闭一个流。
注意:使用fclose()函数就可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区。
unix文件操作函数的更多相关文章
- Unix无缓冲文件操作函数、文件信息查询
问题描述: Unix无缓冲文件操作函数.文件信息查询 问题解决: struct stat 结构体信息: 具体代码: 具体源文件:
- Unix文件操作
一.概述 Unix文件操作常用函数包括open.close.creat.lseek.dup.dup2.fcntl等, 其中open.creat. fcntl函数需要包含头文件<fcntl.h&g ...
- Linux C 文件操作函数(~上善止水~)
翻翻笔记,整理一下 C 语言中的文件操作函数 ~~~~~~,多注意细节,maybe 细节决定成败~ 1. fopen /* fopen(打开文件) * * 相关函数 open,fclose * * 表 ...
- 常用PHP文件操作函数
注:文件操作函数的行为受到 php.ini 中设置的影响. 当在 Unix 平台上规定路径时,正斜杠 (/) 用作目录分隔符.而在 Windows 平台上,正斜杠 (/) 和反斜杠 (\) 均可使用. ...
- Delphi文件操作函数
文件是同一种类型元素的有序集合,是内存与外设之间传输数据的渠道.文件的本质是一个数据流,所有的文件实际上是一串二进制序列.文件管理包括:1.文件操作.2.目录操作.3.驱动器操作.三部分. 1.常见文 ...
- PHP常用的文件操作函数集锦
以下是个人总结的PHP文件操作函数.当然,这只是部分,还有很多,我没有列出来. 一 .解析路径: 1 获得文件名:basename();给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件 ...
- C语言样式的文件操作函数
使用C语言样式的文件操作函数,需要包含stdio.h头文件. 1.打开文件的函数: //oflag的取值为“w”或“r”,分别表示以写或读的方式打开 FILE* fd = fopen(filename ...
- C语言文件操作函数
C语言文件操作函数大全 clearerr(清除文件流的错误旗标) 相关函数 feof表头文件 #include<stdio.h> 定义函数 void clearerr(FILE * str ...
- 总结文件操作函数-文件夹(三)-C语言
获取.改变当前文件夹: 原型为: #include <unistd.h> //头文件 char *getcwd(char *buf, size_t size); //获取当前文件夹.相 ...
随机推荐
- 【翻译】Netscaler真实表现性能调整
源地址:https://msandbu.wordpress.com/2014/10/31/netscaler-and-real-performance-tuning/ 作者显然不是以英语为母语的,所以 ...
- 如何rename sqlserver database
Problem Sometimes there is a need to change the name of your database whether this is because the or ...
- 斯坦福iOS7公开课1-3笔记及纸牌Demo
1.MVC Model:模型 描述程序是什么,例如数据库操作之类的行文以及纸牌Demo里纸牌玩法都是写在Model这一层,通过Notification和KVO(后续文章会介绍)两种方式与Control ...
- iOS之 随笔Xcode7的lipo
此文是学习所用,若要转载请注明出处 Xcode的lipo xcrun -sdk iphoneos lipo Xcode7以后lipo存放位置变化 /Applications/Xcode.app/Con ...
- Javascript中的五种数据类型
Undefined 未定义.只有一个值undefined Null 只有一个值,null Boolean 在javascript中,只要逻辑表达式不返回undefined不返回null ...
- android intent 5.1
1.intent 6 items action, data(uri &type),Component name,Extras,flags 2.data---uri & type 不管使 ...
- QA:java.lang.RuntimeException:java.io.FileNotFoundException:Resource nexus-maven-repository-index.properties does not exist.
QA:java.lang.RuntimeException:java.io.FileNotFoundException:Resource nexus-maven-repository-index.pr ...
- Linux线程学习(一)
一.Linux进程与线程概述 进程与线程 为什么对于大多数合作性任务,多线程比多个独立的进程更优越呢?这是因为,线程共享相同的内存空间.不同的线程可以存取内存中的同一个变量.所以,程序中的所有线程都可 ...
- (转)Block的使用
转:http://my.oschina.net/leejan97/blog/268536 本文翻译自苹果的文档,有删减,也有添加自己的理解部分. 如果有Block语法不懂的,可以参考fuckingbl ...
- Effective Java 16 Favor composition over inheritance
Inheritance disadvantage Unlike method invocation, inheritance violates encapsulation. Since you don ...