C语⾔的f(open)函数(⽂件操作读写)
头⽂件:#include <stdio.h>
fopen()是⼀个常⽤的函数,⽤来以指定的⽅式打开⽂件,其原型为:
FILE * fopen(const char * path, const char * mode);
【参数】path为包含了路径的⽂件名,mode为⽂件打开⽅式。
mode有以下⼏种⽅式:
打开⽅
说明
式
r以只读⽅式打开⽂件,该⽂件必须存在。
r+以读/写⽅式打开⽂件,该⽂件必须存在。
rb+以读/写⽅式打开⼀个⼆进制⽂件,只允许读/写数据。
rt+以读/写⽅式打开⼀个⽂本⽂件,允许读和写。
w打开只写⽂件,若⽂件存在则长度清为0,即该⽂件内容消失,若不存在则创建该⽂件。
w+打开可读/写⽂件,若⽂件存在则⽂件长度清为零,即该⽂件内容会消失。若⽂件不存在则建⽴该⽂件。
a以附加的⽅式打开只写⽂件。若⽂件不存在,则会建⽴该⽂件,如果⽂件存在,写⼊的数据会被加到⽂件尾,即⽂件原先的内容会被保留(EOF符保留)。
a+以附加⽅式打开可读/写的⽂件。若⽂件不存在,则会建⽴该⽂件,如果⽂件存在,则写⼊的数据会被加到⽂件尾后,即⽂件原先的内容会被保留(原来的EOF符不保留)。
wb以只写⽅式打开或新建⼀个⼆进制⽂件,只允许写数据。
wb+以读/写⽅式打开或建⽴⼀个⼆进制⽂件,允许读和写。
wt+以读/写⽅式打开或建⽴⼀个⽂本⽂件,允许读写。
linux怎么读文件内容at+以读/写⽅式打开⼀个⽂本⽂件,允许读或在⽂本末追加数据。
ab+以读/写⽅式打开⼀个⼆进制⽂件,允许读或在⽂件末追加数据。
在POSIX 系统,包含Linux 下都会忽略 b 字符。由fopen()所建⽴的新⽂件会具有
S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此⽂件权限也会参考umask 值。
⼆进制和⽂本模式的区别:
在windows系统中,⽂本模式下,⽂件以"\r\n"代表换⾏。若以⽂本模式打开⽂件,并⽤fputs等函数写⼊换⾏符"\n"时,函数会⾃动在"\n"前⾯加上"\r"。即实际写⼊⽂件的是"\r\n" 。
在类Unix/Linux系统中⽂本模式下,⽂件以"\n"代表换⾏。所以Linux系统中在⽂本模式和⼆进制模式下并⽆区别。
更多信息请查看:
有些C编译系统可能不完全提供所有这些功能,有的C版本不⽤"r+","w+","a+",⽽⽤"rw","wr","ar"等,读者注意所⽤系统的规定。
【返回值】⽂件顺利打开后,指向该流的⽂件指针就会被返回。若果⽂件打开失败则返回NULL,并把错误代码存在errno 中。
注意:⼀般⽽⾔,开⽂件后会作⼀些⽂件读取或写⼊的动作,若开⽂件失败,接下来的读写动作也⽆法顺利进⾏,所以在fopen()后请作错误判断及处理。
⽂件操作完成后,需要将⽂件关闭,⼀定要注意,否则会造成⽂件所占⽤内存泄露和在下次访问⽂件时出现问题。
⽂件关闭后,需要将⽂件指针指向空,这样做会防⽌出现游离指针,⽽对整个⼯程造成不必要的⿇烦,如fp = NULL。
【实例】打开⼀个⽂件然后关闭该⽂件。
1. #include<stdio.h>
2. #include<string.h>
3. #include<stdlib.h>
4. int main()
5. {
6.
7. FILE* fstream;
8. char msg[100] = "Hello!I have read this file.";
9. fstream=fopen("","at+");
10. if(fstream==NULL)
11. {
12. printf("open failed!\n");
13. exit(1);
14. }
15. else
16. {
17. printf("open succeed!\n");
18. }
19. fclose(fstream);
20. return 0;
21. }
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论