本文主要是介绍Linux标准文件IO操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文件IO就是对文件的输入输出。对于linux来说,linux的一切都是文件,包括文件夹。
-:普通文件
d:目录文件
c:字符设备文件
b:块设备文件
p:管道文件
l:链接文件
标准文件IO(带缓存):【在头文件stdio.h中】
1. 打开文件
fopen
FILE *fopen(const char *path, const char *mode);
a、FILE文件指针
b、const char *path要打开的文件路径
c、const char *mode打开文件方式(权限)
mode说明:
r 打开只读文件,该文件必须存在。
r+ 打开可读写的文件,该文件必须存在。
rb+ 读写打开一个二进制文件,只允许读写数据。
rt+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
例:
//打开文件
FILE *file=NULL; //定义一个文件指针
file = fopen("./test.txt", "w+"); //fopen返回打开文件的指针
2、读写文件
fread
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
参数说明:
size_t:读了多少次
void *ptr:读到的数据存放位置
size_t size:一次读多少个字节
size_t nmemb:读多少次
FILE *stream:文件指针,从这个文件中读
//读文件
char buf[128];
ret = fread(buf, 128, 1, file);//从file读到wbuf,读一次,每次读128个字节
fwrite
size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
参数与fread类似.
//把wbuf内容写入文件
char wbuf[128];
scanf("%s", wbuf);
int ret = fwrite(wbuf, strlen(wbuf) ,1,file);//从wbuf写数据到file,写一次,每次写wbuf数据的长度
参数说明:
FILE *stream:要偏移的文件指针
long offset:偏移量
int whence:参照物(有三个参照物,文件头(SEEK_SET),文件尾(SEEK_END),当前位置(SEEK_CUR))
也就是将文件指针移动到离参照物(头,尾,当前)偏移量的地方。
//把文件指针移动到文件开头
fseek(file, 0, SEEK_SET);//以头为参照物移动0字节
//移动文件指针到文件尾
int ret = fseek(file, 0, SEEK_END);
//计算偏移量--文件大小
long size = ftell(file);
这篇关于Linux标准文件IO操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!