这两天看了文件读写的专题,索性把有关内容整理了一下。
C语言文件的读写只是一些读写函数的应用。 fopen (、fread )、fwrite )等)等,进行简单介绍。
一、fopen () )
函数原型: file*fopen(constchar*path,const char *mode );
参数说明: path,打开的文件名。 包含文件路径,默认值为当前项目目录。 模式:流程形态,详细情况将在后面叙述。
返回值:文件指针。 打开失败,返回空值; 打开了。 返回指向流的文件指针。
模式详细信息:模式是指打开文件的方式,是读写吗? 二进制? 要添加到文件末尾吗? 等等。
r:只读,文件必须存在
r :读写方式,需要存在文件
rb :读写二进制(binary )文件,但似乎是只读的。 可以自己测试。
rw :文本文件读写
w:只写文件。 如果文件存在,则复盖原始内容; 如果不存在,则创建新文件
w :读写。 如果文件存在,(写入时)将覆盖原始内容; 如果不存在,则创建新文件
a: append,只写文件。 如果文件存在,则追加写入的内容到文件的末尾; 如果不存在,则创建新文件
a : append,读写文件。 如果文件存在,则追加写入的内容到文件的末尾; 如果不存在,则创建新文件
wb:只需要写。 二进制文件。 如果不存在,则创建新文件
wb :读写。 二级文件。 如果不存在,请创建新文件。
值得注意的是,某些编译器支持rw等参数,如linux文件属性(rwx-421 )。
二、fopen (,fwrite ) )。
1 )函数原型(size_tfread ) void*ptr、size_t size、size_t count、FILE *stream );
参数说明: ptr :数据缓冲器的位置; size )每个数据类型的大小(count )数据的数量; 流:指向要读取的文件的文件指针
2 )函数原型(size_tfwrite ) constvoid*ptr、size_t size、size_t count、FILE *stream );
参数描述: ptr、数据缓冲区的位置; 每个数据类型的大小: count :数据个数; 流:指向要写入的文件的文件指针
注意:这两个函数也与fopen ()函数配合使用,读写文件的方式取决于fopen函数的mode参数。
三.文件读写实例
在这里,我将很多结构数据写入我的文件“myfile.dat”,从中读取并回显到console。
1 #包含
2 #包含
3 #define N 5
4类型结构
5 {6 intnum 7 char name[10]; 8 char tel[10]; 9 )9) 9 } STYPE; 10 voidcheck (; 11
12intfun(stype*STD ) 13 ) 14文件* FP=null; //定义时,fp是否指向空比较好?
15 inti; 16if () FP=fopen('myfile.dat ',' wb ' ) )==NULL ) return 0; 17
18打印((noutputdatatofile! n '; 19for(I=0; i N; I ) 20fwrite(STD[I],sizeof ) stype )、1、fp ); 21fclose(FP; 22 fp=NULL; 23返回1; 24 ) 25
6intmain(27 ) 28stypes(10 )={1,' aaaaa ',' 111111'},29 ) 1,' bbbbb ',' 222222'},30 ) 1,' ccccc' 33 intk ' 34k=fun(s; 35if(k==1) 36 ) 37打印) succeed! ' ); 38 check (; 39 ) 40秒
41printf('Fail!' ); 42 ) 43
44voidcheck(45 ) 46文件* FP=null; //定义时,fp是否指向空比较好?
47 inti; 48 STYPE s[10]; 49if () FP=fopen(myfile.dat,(rb ) ) ) )==NULL ) 51printf ) fail! n '; 52exit(0; 53 ) 54打印((nreadfileandoutputtoscreen 3360 (n ) ); 55打印((nnumnametel ) n ); 56for(I=0; i N; I ) 57{58}fread(s[I],sizeof(stype ),1,fp ); 59printf(%d%s%s(n ),s[i].num,s[i].name,s[i].tel ); 60 ) 61fclose(FP ); 62 fp=NULL; 为了避开dangling pointer?
63 }
view代码
程序运行结果的说明:
1 )观察项目目录下多了一个myfile.dat文件
2 )回显至控制台
注意事项:
1 ) fclose(FP ) .文件操作完成后,需要关闭文件流,可能导致文件占用内存泄漏; 或者下次访问文件时,会出现意外问题
2 )关闭fp=NULL .文件后,需要将文件指针指向NULL。 防止钉钉点。
3 )最初定义文件指针时,是否需要指向NULL? 从初始化的角度来看,指向NULL也许可以避免安全问题。
原文: 3358 www.cn blogs.com/let go/p/5728514.html