文件操作

来源:互联网 发布:黑科技网络验证 编辑:程序博客网 时间:2024/05/20 14:15
fopen
r 以只读方式打开文件,该文件必须存在。 
r+ 以可读写方式打开文件,该文件必须存在。 
rb+ 读写打开一个二进制文件,允许读写数据,文件必须存在。 
rw+ 读写打开一个文本文件,允许读和写。 
w 打开只写文件, 若文件存在则文件长度清为0,即该文件内容会消失。 若文件不存在则建立该文件。 
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。 
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留) 
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留) 
int fputs( const char *str, FILE *stream );
char *fgets( char *str, int num, FILE *stream );
while( !feof(p))
    memset(s,0,sizeof(s)) 
    fgets(s,sizeof(s),p); 
   printf("%s",s); 
fgets(缓存字符数组, 缓冲长度,文件指针或者stdin) 
fputs( const char *str, FILE *stream );// 不会默认打印个换行
int fscanf( FILE *stream, const char *format, ... );//从文件中读取作为输入 
 int fprintf( FILE *stream, const char *format, ... ); //打印到文件中 
char name[20] = "Mary"; 
    FILE *out; 
    out = fopen( "output.txt", "w" ); 
    if( out != NULL ) 
      fprintf( out, "Hello %s\n", name ); 

1.1 getcputc函数

int main()

{

FILE *fp = fopen("a.txt""r");

char c;

while ((c = getc(fp)) != EOF)

{

printf("%c", c);

}

fclose(fp);

return 0;

}

int main()

{

FILE *fp = fopen("a.txt""w");

const char *s = "hello world";

int i;

for (i = 0; i < strlen(s); i++)

{

putc(s[i], fp);

}

fclose(fp);

return 0;

}


二进制读写 
int fread( void *buffer, size_t size, size_t num, FILE *stream );

函数fread()读取[num]个对象(每个对象大小为size(大小)指定的字节数),并把它们替换到由buffer(缓冲区)指定的数组. 数据来自给出的输入流. 函数的返回值是读取的对象数量


int fwrite( const void *buffer, size_t size, size_t count, FILE *stream );

fwrite()函数从数组buffer(缓冲区)中, 写count个大小为size(大小)的对象到stream(流)指定的流. 返回值是已写的对象的数量. 


结构体stat封装了文件信息

int  stat(const char * _Filenamestruct stat * _Stat)//指定一个stat对象对于的一个文件路径

stat.st_size;//文件大小,单位:字节

函数的第一个参数代表文件名,第二个参数是struct stat结构。

得到文件的属性,包括文件建立时间,文件大小等信息。


int fseek(FILE * _File, long _Offset, int _Origin);

函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败则不改变stream指向的位置,函数返回一个非0值。

实验得出,超出文件末尾位置,还是返回0。往回偏移超出首位置,还是返回0,请小心使用。

 第一个参数stream为文件指针

第二个参数offset为偏移量,正数表示正向偏移,负数表示负向偏移

第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET

SEEK_SET: 文件开头

SEEK_CUR: 当前位置

SEEK_END: 文件结尾

fseek(fp, 3SEEK_SET);

 

1.1 ftell函数

函数 ftell 用于得到文件位置指针当前位置相对于文件首的偏移字节数。在随机方式存取文件时,由于文件位置频繁的前后移动,程序不容易确定文件的当前位置。

long len = ftell(fp)

 

1.2 fflush函数

fflush函数可以将缓冲区中任何未写入的数据写入文件中。

成功返回0,失败返回EOF

int fflush(FILE * _File);

1.3 remove函数

remove函数删除指定文件

int  remove(const char *_Filename);

参数Filename为指定的要删除的文件名,如果是windows下文件名与路径可以用反斜杠\分隔,也可以用斜杠/分隔

1.4 rename函数

rename函数将指定文件改名

int  rename(const char *_OldFilename,const char *_NewFilename);

参数oleFilename为指定的要修改的文件名,newfilename为修改后的文件名,如果是windows下文件名与路径可以用反斜杠\分隔,也可以用斜杠/分隔。

0 0