文件编程
来源:互联网 发布:php 字节数组转字符串 编辑:程序博客网 时间:2024/06/06 07:36
一.系统调用
1.定义:
是指操作系统提供给用户的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的的服务
2.创建
函数格式:int creat(const char *filename, mode_t mode )
参数说明:filename :创建的文件名(包含路径,缺省为当前路径) mode:创建模式
常创建模式:
S_IRUSR 可读
S_IWUSR 可写
S_IXUSR 可执行
S_IXRWU 可读、可写、可执行
3.打开
int open(const char *pathname, int flags); (不创建文件)
int open(const char *pathname, int flags, mode_t mode); (创建文件)
4.关闭
函数格式:int close(int fd)
5.读
函数格式:int read(int fd, const void *buf, size_t length)
功能:从文件描述符fd所指定的文件中读取length个字节到buf所指向的缓冲区中,返回值为实际读取的字节数。
6.写
函数格式:int write(int fd, const void * buf, size_t length)
功能:把length个字节从buf指向的缓冲区中写到文件描述符fd所指向的文件中,返回值为实际写入的字节数。
7.定位
函数格式:int lseek(int fd, offset_t offset, int whence)
功能:将文件读写指针相对whence移动offset个字节。操作成功时,返回文件指针相对于文件头的位置
whence可使用下述值:
SEEK_SET:相对文件开头
SEEK_CUR:相对文件读写指针的当前位置
SEEK_END:相对文件末尾
二.用户编程接口(API)
系统调用并不是直接与程序员进行交互的,它仅仅是一个通过软中断机制向内核提交请求,以获取内核服务的接口。在实际使用中程序员调用的通常是用户编程接口—API
系统命令相对API更高了一层,它实际上一个可执行程序,它的内部引用了用户编程接口(API)来实现相应的功能
三.文件描述符
当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件时,也需要把文件描述符作为参数传递给相应的函数。
文件描述符是一个非负的整数,它是一个索引值,并指向在内核中每个进程打开文件的记录表。
四.库函数
1.创建和打开
函数格式:FILE *fopen(const char *filename, const char *mode)
参数说明:filename:打开的文件名(包含路径,缺省为当前路径)mode: 打开模式
r, rb : 只读方式打开,文件必须已存在
w,wb : 只写方式打开,如果文件不存在则创建, 如果文件已存在清空重写
a, ab: 只能在文件末尾追加数据,如果文件不存在则创建
r+,rb+,r+b: 读写方式打开,文件必须已存在
w+,w+b,wb+: 读写方式打开,如果文件不存在则创建,如果文件已存在清空重写
a+,a+b,ab+: 读和追加方式打开,如果文件不存在则创建
2.关闭
函数格式:int fclose(FILE * stream);
返回值:若关文件动作成功则返回0,有错误发生时则返回EOF并把错误代码存到errno。
3.从文件流读取数据
函数格式:size_t fread(void * ptr,size_t size, size_t nmemb, FILE * stream)
参数说明:stream为已打开的文件指针,ptr:指向欲存放读取进来的数据空间,读取的字符数以参数size*nmemb来决定。
4.将数据写至文件流
函数格式:size_t fwrite(const void * ptr, size_t size, size_t nmemb, FILE * stream)
参数说明: stream:为已打开的文件指针,ptr:指向欲写入的数据地址,总共写入的字符数以参数size*nmemb来决定。
1.定义:
是指操作系统提供给用户的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的的服务
2.创建
函数格式:int creat(const char *filename, mode_t mode )
参数说明:filename :创建的文件名(包含路径,缺省为当前路径) mode:创建模式
常创建模式:
S_IRUSR 可读
S_IWUSR 可写
S_IXUSR 可执行
S_IXRWU 可读、可写、可执行
3.打开
int open(const char *pathname, int flags); (不创建文件)
int open(const char *pathname, int flags, mode_t mode); (创建文件)
参数说明:pathname是要打开或创建的文件的名字
flags参数可用来说明此函数的多个选择项
mode对于open函数而言,仅当创建新文件时才使用第三个参数
mode 参数:O_RDONLY 只读打开,O_WRONLY 只写打开,O_RDWR 读、写打开4.关闭
函数格式:int close(int fd)
5.读
函数格式:int read(int fd, const void *buf, size_t length)
功能:从文件描述符fd所指定的文件中读取length个字节到buf所指向的缓冲区中,返回值为实际读取的字节数。
6.写
函数格式:int write(int fd, const void * buf, size_t length)
功能:把length个字节从buf指向的缓冲区中写到文件描述符fd所指向的文件中,返回值为实际写入的字节数。
7.定位
函数格式:int lseek(int fd, offset_t offset, int whence)
功能:将文件读写指针相对whence移动offset个字节。操作成功时,返回文件指针相对于文件头的位置
whence可使用下述值:
SEEK_SET:相对文件开头
SEEK_CUR:相对文件读写指针的当前位置
SEEK_END:相对文件末尾
二.用户编程接口(API)
系统调用并不是直接与程序员进行交互的,它仅仅是一个通过软中断机制向内核提交请求,以获取内核服务的接口。在实际使用中程序员调用的通常是用户编程接口—API
系统命令相对API更高了一层,它实际上一个可执行程序,它的内部引用了用户编程接口(API)来实现相应的功能
三.文件描述符
当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件时,也需要把文件描述符作为参数传递给相应的函数。
文件描述符是一个非负的整数,它是一个索引值,并指向在内核中每个进程打开文件的记录表。
四.库函数
1.创建和打开
函数格式:FILE *fopen(const char *filename, const char *mode)
参数说明:filename:打开的文件名(包含路径,缺省为当前路径)mode: 打开模式
r, rb : 只读方式打开,文件必须已存在
w,wb : 只写方式打开,如果文件不存在则创建, 如果文件已存在清空重写
a, ab: 只能在文件末尾追加数据,如果文件不存在则创建
r+,rb+,r+b: 读写方式打开,文件必须已存在
w+,w+b,wb+: 读写方式打开,如果文件不存在则创建,如果文件已存在清空重写
a+,a+b,ab+: 读和追加方式打开,如果文件不存在则创建
2.关闭
函数格式:int fclose(FILE * stream);
返回值:若关文件动作成功则返回0,有错误发生时则返回EOF并把错误代码存到errno。
3.从文件流读取数据
函数格式:size_t fread(void * ptr,size_t size, size_t nmemb, FILE * stream)
参数说明:stream为已打开的文件指针,ptr:指向欲存放读取进来的数据空间,读取的字符数以参数size*nmemb来决定。
4.将数据写至文件流
函数格式:size_t fwrite(const void * ptr, size_t size, size_t nmemb, FILE * stream)
参数说明: stream:为已打开的文件指针,ptr:指向欲写入的数据地址,总共写入的字符数以参数size*nmemb来决定。
阅读全文
0 0
- 文件编程
- 文件编程
- 文件编程
- 文件编程
- 文件编程
- 文件编程
- 文件编程
- 文件编程
- 文件编程
- 文件编程
- 文件编程
- 文件编程
- 文件编程
- 文件编程
- 文件编程
- 文件编程
- 文件编程
- 文件编程
- Linux进程控制编程
- 进程
- 棋类对战小游戏(VS2012 MFC)
- EA&UML日拱一卒-多任务编程超入门-(12)关于Semaphore,一个不得不说的实例
- POJ刷题指南
- 文件编程
- NYOJ 最少步数
- 习题7.3
- LDAP服务器的概念和原理简单介绍
- Leetcode:454. 4Sum II (解决时间和空间复杂度是关键)
- 减治法求八硬币问题,Java实现
- 通信网络编程第二次作业
- JAVA源文件动态编译
- 关于中断