文件基础
概念和作用
Linux下一切都是文件。文件是用来存放数据
Linux中文件的类型
d | 目录文件(directory file) |
- | 普通文件(regular file) |
l | 符号链接文件(symbolic link file) |
p | 命名管道文件(named pipe file) |
s | 套接字文件(socket file) |
c | 字符设备文件(character device file) |
b | 块设备文件(block device file) |
相关函数
fopen
函数原型:FILE *fopen(const char *pathname, const char *mode);
功能:打开一个文件,并建立一个流
参数:
//path:要打开文件的路径 //是一个字符串//mode:
//r 只读
//文件不存在报错
//文件存在则只读打开//r+ 读写
//文件不存在报错
//文件存在则读写打开//w 只写
//文件不存在则创建
//文件存在则清0只写打开//w+ 写读
//文件不存在则创建
//文件存在则清0写读打开//a 追加可写
//文件不存在则创建
//文件存在则追加只写打开 定位到文件最后增加内容。//a+ 追加读写
//文件不存在则创建
//文件存在则追加读写打开
返回值:打开成功返回建立的文件流指针,失败则返回NULL。
使用实例:
fputc
函数原型:int fputc(int c, FILE *stream);
功能:向流中写入一个字符
参数:
//stream:文件流指针
返回值:成功返回读到字符的ASCII码值读到文件末尾返回EOF失败返回EOF -1
使用实例:
fgetc
函数原型:int fgetc(FILE *stream);
功能:从流中读取一个字符
参数:
//stream:文件流指针
返回值:成功返回读到字符的ASCII码值读到文件末尾返回EOF失败返回EOF -1
使用实例:
fputs
函数原型:int puts(const char *s);
功能:从s所在的本地内存中获取一行数据,并写入stream对应的文件流对象。
参数:
//s 要写的信息,一般是固定的字符串或者有数据的数组。
//stream 要写入的目标文件流对象
返回值:成功返回一个非负数,失败 -1;
使用实例:
fgets
函数原型:char *fgets(char *s, int size, FILE *stream);
功能:从stream流对象关联的文件中获取size大小字节的文本数据并存储到s对应的本地内存(栈区数组,堆区内存)
参数:
//s 要存储数据的本地内存
//size 要获取的数据长度,单位字节。
//stream 要获取的目标文件流对象,
返回值:成功返回指向有效数据的首地址,一般等于s的地址,失败或者文件末尾 NULL;
使用实例:
fwrite
函数原型:size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
功能:从ptr所在本地内存中取出nmemb个大小为size的数据块写入到stream流对应的文件流对象中。
参数:
//ptr 要存储数据的本地内存一般是数组或者结构体指针
//size 单个数据块的元数据大小。最小单元的大小
//nmemb 要获取的数据块的个数,拷贝的数据块个数。
//stream 要获取数据的源文件流对象,如果是stdin表示从
//键盘获取数据,如果是fp文件则表示从普通文件获取。
返回值:成功返回小于等于nemeb的整数,表示获取的数据长度,失败小于0,结尾 0;
使用实例:
fread
函数原型:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
功能:从指定的stream流对象中获取nmemeb个大小为size字节的数据块到ptr所在的本地内存中。
参数:
//ptr 要写的数据块地址,一般是数组或者结构体指针
//size 要写的数据块元数据大小,单位是字节
//nmemb 要写的数据块的个数
//stream 要写的目标文件流对象。如果是stdout则表示数据会
//写到终端屏幕显示,如果是fp的普通文件则会写入到文件中
返回值:成功返回小于等于nmemb 的个数,失败 <0
使用实例: