fdopen的用法
除可指定打开的文件、模式外,还可指定特定的I/O流。
其中,mode定义打开文件的访问权限等
fclose的用法
该函数将缓冲区内的数据全部写入到文件中,并释放系统所提供的文件资源
fread的用法
在文件流被打开之后,可对文件流进行读写等操作,其中读操作的函数为fread()
fwrite的用法
该函数是用于对指定的文件流进行写操作
fseek的用法:
功 能:函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置,函数返回一个非0值。
int fseek( FILE*stream, long offset, int origin );
第一个参数stream为文件指针
第二个参数offset为偏移量,正数表示正向偏移,负数表示负向偏移
第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET
SEEK_SET: 文件开头
SEEK_CUR: 当前位置
SEEK_END: 文件结尾
fseek(fp,100L,SEEK_SET);fp指针移离文件100字节处;
fseek(fp,100L,SEEK_CUR);fp指针移离文件前位置100字节处;
fseek(fp,100L,SEEK_END);fp指针退离文件结尾100字节处
int filesize = fseek( fp, 0, SEEK_END); //计算文件长度
ftell的用法:
功 能:返回当前文件指针(注意:返回的是文件的指针,指向第几个字节)
用 法:long ftell(FILE *stream);
feof的用法:
原型:int feof(FILE *stream)
功能:判断文件是否结束,返回值为0时表示还没有结束,否则结束!
实例:文本文件复制
#include <stdio.h>
int main()
{
char buffer[10];
FILE *fp=fopen("./11.txt","r+");
FILE *fp1=fopen("./22.txt","w+");
int len;
if(fp==NULL||fp1==NULL)
{
perror("Failed to open src.txt");
return -1;
}
printf("file is ok\n");
fseek(fp,5,SEEK_SET);
printf("this file point at %ld \n",ftell(fp));
if(feof(fp)==0)
printf("file is excuted\n");
else
printf("file is end\n");
while((len=fread(buffer, 1,10, fp))>0){
fwrite(buffer,1,len,fp1);
}
fclose(fp);
fclose(fp1);
if(feof(fp)==0)
printf("file is excuted\n");
else
printf("file is end\n");
}