VC读写函数详解针对文件资料.docx

上传人:b****7 文档编号:15876894 上传时间:2023-07-08 格式:DOCX 页数:15 大小:17.62KB
下载 相关 举报
VC读写函数详解针对文件资料.docx_第1页
第1页 / 共15页
VC读写函数详解针对文件资料.docx_第2页
第2页 / 共15页
VC读写函数详解针对文件资料.docx_第3页
第3页 / 共15页
VC读写函数详解针对文件资料.docx_第4页
第4页 / 共15页
VC读写函数详解针对文件资料.docx_第5页
第5页 / 共15页
VC读写函数详解针对文件资料.docx_第6页
第6页 / 共15页
VC读写函数详解针对文件资料.docx_第7页
第7页 / 共15页
VC读写函数详解针对文件资料.docx_第8页
第8页 / 共15页
VC读写函数详解针对文件资料.docx_第9页
第9页 / 共15页
VC读写函数详解针对文件资料.docx_第10页
第10页 / 共15页
VC读写函数详解针对文件资料.docx_第11页
第11页 / 共15页
VC读写函数详解针对文件资料.docx_第12页
第12页 / 共15页
VC读写函数详解针对文件资料.docx_第13页
第13页 / 共15页
VC读写函数详解针对文件资料.docx_第14页
第14页 / 共15页
VC读写函数详解针对文件资料.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VC读写函数详解针对文件资料.docx

《VC读写函数详解针对文件资料.docx》由会员分享,可在线阅读,更多相关《VC读写函数详解针对文件资料.docx(15页珍藏版)》请在冰点文库上搜索。

VC读写函数详解针对文件资料.docx

VC读写函数详解针对文件资料

VC读写函数详解

1.当前文件指针位置获取函数

longftell(FILE*stream);

参数:

stream文件指针

返回值:

当前文件指针的位置

实例:

#include

FILE*stream;

voidmain(void)

{

  longposition;

  charlist[100];

  if((stream=fopen("ftell.c","rb"))!

=NULL)

  {

     /*Movethepointerbyreadingdata:

*/

     fread(list,sizeof(char),100,stream);

     /*Getpositionafterread:

*/

     position=ftell(stream);

     printf("Positionaftertryingtoread100bytes:

%ld\n",

             position);

     fclose(stream);

  }

}

输出:

Positionaftertryingtoread100bytes:

100

2.文件的打开函数

FILE*fopen(constchar*filename,constchar*mode);

FILE*_wfopen(constwchar_t*filename,constwchar_t*mode);

参数:

filename文件的名称mode打开文件的模式

返回值:

成功的打开文件的话返回文件的指针否则返回NULL表示打开文件错误

注:

"r"

只读方式打开

"w"

以写入方式打开

"a"

从文件的尾端写入数据,要是文件不存在则创建后写入数据

"r+"

以读写方式打开(文件必须存在)

"w+"

打开一个可以读写的文件,如果该文件存在则覆盖写入

"a+"

打开文件并追加写入

源于

实例:

#include

FILE*stream,*stream2;

voidmain(void)

{

  intnumclosed;

  /*Openforread(willfailiffile"data"doesnotexist)*/

  if((stream=fopen("data","r"))==NULL)

     printf("Thefile'data'wasnotopened\n");

  else

     printf("Thefile'data'wasopened\n");

  /*Openforwrite*/

  if((stream2=fopen("data2","w+"))==NULL)

     printf("Thefile'data2'wasnotopened\n");

  else

     printf("Thefile'data2'wasopened\n");

  /*Closestream*/

  if(fclose(stream))

     printf("Thefile'data'wasnotclosed\n");

  /*Allotherfilesareclosed:

*/

  numclosed=_fcloseall();

  printf("Numberoffilesclosedby_fcloseall:

%u\n",numclosed);

}

输出:

Thefile'data'wasopened

Thefile'data2'wasopened

Numberoffilesclosedby_fcloseall:

1

3.文件读取函数

size_tfread(void*buffer,size_tsize,size_tcount,FILE*stream)

参数:

buffer文件读取缓冲区size读取数据的类型count读取数据的个数stream文件指针

返回值:

实际读取的数据个数

源于

例子:

FILE*fp;

char*buffer=newchar[1024];

longrealLength=fread(buffer,sizeof(char),1024,fp);

//

//处理过程

//

deletebuffer;

fclose(fp);

4.文件的写入函数

size_tfwrite(constvoid*buffer,size_tsize,size_tcount,FILE*stream);

参数:

buffer所要写入文件的缓冲区size写入数据的类型count写入数据的个数stream文件指针

返回值:

实际写入的数据个数

源于

实例:

#include

voidmain(void)

{

  FILE*stream;

  charlist[30];

  inti,numread,numwritten;

  /*Openfileintextmode:

*/

  if((stream=fopen("fread.out","w+t"))!

=NULL)

  {

     for(i=0;i<25;i++)

        list[i]=(char)('z'-i);

     /*Write25characterstostream*/

     numwritten=fwrite(list,sizeof(char),25,stream);

     printf("Wrote%ditems\n",numwritten);

     fclose(stream);

  }

  else

     printf("Problemopeningthefile\n");

  if((stream=fopen("fread.out","r+t"))!

=NULL)

  {

     /*Attempttoreadin25characters*/

     numread=fread(list,sizeof(char),25,stream);

     printf("Numberofitemsread=%d\n",numread);

     printf("Contentsofbuffer=%.25s\n",list);

     fclose(stream);

  }

  else

     printf("Filecouldnotbeopened\n");

}

输出:

Wrote25items

Numberofitemsread=25

Contentsofbuffer=zyxwvutsrqponmlkjihgfedcb

5.文件指针搜索函数

intfseek(FILE*stream,longoffset,intorigin)

参数:

stream文件指针offset从当前指针开始的偏移量origin文件指针当前的位置

返回值:

成功返回0否则返回非零值

注:

指针移动的时候是按字节移动的,要是成功的话文件的指针将指向当前搜索到的位置

origin可以的取值在stdio.h已经定义如下:

SEEK_CUR

当前的文件指针

SEEK_END

文件结束

SEEK_SET

文件的开始

源于

实例:

#include

voidmain(void)

{

  FILE*stream;

  charline[81];

  intresult;

  stream=fopen("fseek.out","w+");

  if(stream==NULL)

     printf("Thefilefseek.outwasnotopened\n");

  else

  {

     fprintf(stream,"Thefseekbeginshere:

"

                      "Thisisthefile'fseek.out'.\n");

     result=fseek(stream,23L,SEEK_SET);

     if(result)

        printf("Fseekfailed");

     else

     {

        printf("Filepointerissettomiddleoffirstline.\n");

        fgets(line,80,stream);

        printf("%s",line);

     }

     fclose(stream);

  }

}

输出:

Filepointerissettomiddleoffirstline.

Thisisthefile'fseek.out'.

6.按固定的格式写入数据函数

intfprintf(FILE*stream,constchar*format[,argument]...)

intfwprintf(FILE*stream,constwchar_t*format[,argument]...)

参数:

stream文件指针format按照一定的格式argument可选参数列表

返回值:

fprintf返回实际写入的字节数.fwprintf返回实际写入的wchar_t的字节数

源于

实例:

#include

#include

FILE*stream;

voidmain(void)

{

  int   i=10;

  doublefp=1.5;

  char  s[]="thisisastring";

  char  c='\n';

  stream=fopen("fprintf.out","w");

  fprintf(stream,"%s%c",s,c);

  fprintf(stream,"%d\n",i);

  fprintf(stream,"%f\n",fp);

  fclose(stream);

  system("typefprintf.out");

}

输出:

thisisastring

10

1.500000

7.按固定的格式读入数据函数

intfscanf(FILE*stream,constchar*format[,argument]...)

intfwscanf(FILE*stream,constwchar_t*format[,argument]...)

参数:

stream文件指针format按照一定的格式argument可选参数列表

返回值:

fscanf返回实际读入的字节数.fwscanf返回实际读入的wchar_t的字节数

如果返回值为0则说明没有被赋值

如果有文件结束或是异常的IO错误时返回EOF(宏定义)

源于

实例:

#include

FILE*stream;

voidmain(void)

{

  longl;

  floatfp;

  chars[81];

  charc;

  stream=fopen("fscanf.out","w+");

  if(stream==NULL)

     printf("Thefilefscanf.outwasnotopened\n");

  else

  {

     fprintf(stream,"%s%ld%f%c","a-string",

              65000,3.14159,'x');

     /*Setpointertobeginningoffile:

*/

     fseek(stream,0L,SEEK_SET);

     /*Readdatabackfromfile:

*/

     fscanf(stream,"%s",s);

     fscanf(stream,"%ld",&l);

     fscanf(stream,"%f",&fp);

     fscanf(stream,"%c",&c);

     /*Outputdataread:

*/

     printf("%s\n",s);

     printf("%ld\n",l);

     printf("%f\n",fp);

     printf("%c\n",c);

     fclose(stream);

  }

}

输出:

a-string

65000

3.141590

X

8.文件指针的定位和获取

intfsetpos(FILE*stream,constfpos_t*pos);

intfgetpos(FILE*stream,constfpos_t*pos);

参数:

stream目标文件指针pos文件指针的位置

返回值:

设置指针位置成功的话fsetpos返回0否则返回一个非零的数

获得指针位置成功的话fgetpos返回0否则返回一个非零的数

源于

实例:

#include

voidmain(void)

{

  FILE  *stream;

  fpos_tpos;

  char  buffer[20];

  if((stream=fopen("fgetpos.c","rb"))==NULL)

     printf("Troubleopeningfile\n");

  else

  {

     /*Readsomedataandthenchecktheposition.*/

     fread(buffer,sizeof(char),10,stream);

     if(fgetpos(stream,&pos)!

=0)

        printf("fgetposerror");

     else

     {

        fread(buffer,sizeof(char),10,stream);

        printf("10bytesatbyte%I64d:

%.10s\n",pos,buffer);

     }

  /*Setanewpositionandreadmoredata*/

  pos=140;

  if(fsetpos(stream,&pos)!

=0)

     printf("fsetposerror");

  fread(buffer,sizeof(char),10,stream);

  printf("10bytesatbyte%I64d:

%.10s\n",pos,buffer);

  fclose(stream);

  }

}

输出:

10bytesatbyte10:

.C:

Thisp

10bytesatbyte140:

.Candthe

9.文件指针重新定位到开始

voidrewind(FILE*stream)

参数:

stream文件指针

返回值:

注:

执行完本函数后,文件的指针将返回到开始位置

实例:

#include

voidmain(void)

{

  FILE*stream;

  intdata1,data2;

  data1=1;

  data2=-37;

  if((stream=fopen("rewind.out","w+"))!

=NULL)

  {

     fprintf(stream,"%d%d",data1,data2);

     printf("Thevalueswrittenare:

%dand%d\n",data1,data2);

     rewind(stream);

     fscanf(stream,"%d%d",&data1,&data2);

     printf("Thevaluesreadare:

%dand%d\n",data1,data2);

     fclose(stream);

  }

}

输出:

Thevalueswrittenare:

1and-37

Thevaluesreadare:

1and-37

10.取得文件指针所指的行

char*fgets(char*string,intn,FILE*stream);

intfputs(constchar*string,FILE*stream);

参数:

fgets的string保存到的字符串缓冲,而fputs的string表示要写入的字符串

n表示从文件中读出的字符串不超过n-1个字符,在读入的最后一个字符后加上串结束标志'\0'

stream文件指针

返回值:

成功的话返回字符数组的首地址否则返回NULL

源于

实例:

#include

voidmain(void)

{

  FILE*stream;

  charline[100];

  if((stream=fopen("fgets.c","r"))!

=NULL)

  {

     if(fgets(line,100,stream)==NULL)

        printf("fgetserror\n");

     else

        printf("%s",line);

     fclose(stream);

  }

fputs("Helloworldfromfputs.\n",stdout);

}

输出:

Thisprogramusesfgetstodisplay

Helloworldfromfputs.

11.关闭文件函数

int_fcloseall(void)

intfclose(FILE*stream)

参数:

stream文件指针

返回值:

fclose成功关闭返回0否则返回EOF表示错误

_fcloseall成功返回总共关闭的文件数否则的话返回EOF表示错误

实例:

#include

FILE*stream,*stream2;

voidmain(void)

{

  intnumclosed;

  /*Openforread(willfailiffile"data"doesnotexist)*/

  if((stream=fopen("data","r"))==NULL)

     printf("Thefile'data'wasnotopened\n");

  else

     printf("Thefile'data'wasopened\n");

  /*Openforwrite*/

  if((stream2=fopen("data2","w+"))==NULL)

     printf("Thefile'data2'wasnotopened\n");

  else

     printf("Thefile'data2'wasopened\n");

  /*Closestream*/

  if(fclose(stream))

     printf("Thefile'data'wasnotclosed\n");

  /*Allotherfilesareclosed:

*/

  numclosed=_fcloseall();

  printf("Numberoffilesclosedby_fcloseall:

%u\n",numclosed);

}

输出:

Thefile'data'wasopened

Thefile'data2'wasopened

Numberoffilesclosedby_fcloseall:

1

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2