一般来说,人类可读的文件都作为文本文件,例如一片文章。其余都作为二进制文件,例如一个程序。
在C语言中,文件的 *** 作是通过FILE结构体进行了,利用fopen返回一个指向FILE结构体的指针,在使用fopen函数过程中,使用mode控制符对是否打开哪类文件进行控制:
FILE *fopen( const char *filename, const char *mode )
filename:文件名,mode:打开的模式,规定了是可读、可写、追加之类的属性。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读写数据,文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
如果调用失败,返回一个空指针。
c语言可以通过stat()函数获得文件属性,通过返回的文件属性,从中获取文件大小。#include
<sys/stat.h>
可见以下结构体和函数
struct
stat
{
_dev_t
st_dev
_ino_t
st_ino
unsigned
short
st_mode
short
st_nlink
short
st_uid
short
st_gid
_dev_t
st_rdev
_off_t
st_size
//文件大小
time_t
st_atime
time_t
st_mtime
time_t
st_ctime
}
stat(const
char
*,
struct
_stat
*)
//根据文件名得到文件属性
参考代码:
#include <sys/stat.h>
void main( )
{
struct stat buf
if ( stat( "test.txt", &buf ) <0 )
{
perror( "stat" )
return
}
printf("file size:%d\n", buf.st_size )
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)