十二.档案之输入与输出

 

档案之输入与输出

 

       C++软件本身提供了许多档案的输入与输出,以方便读者设计与档案有关的系统函数。基本上,我们可以将这些函数分成两大类。

 

1.        1.        有缓冲区输入与输出(Buffered I/O)

当它在读取档案数据或将数据写入档案时,一定都先经过一个缓冲区。

 

 

2.       2.       无缓冲区输入与输出(Unbuffered I/O)

所谓没有缓冲区的输入与输出,表示输入与输出的动作是直接在磁盘内,执行读取数据和写入数据动作。

 

有缓冲区的输入与输出函数

 

函数名称

功能说明

fopen( )

开启一个档案

fclose( )

关闭一个档案

putc( )

输出一个字符到档案

getc( )

从某一个档案读取一个字符

fprintf( )

输出数据至某档案

fscanf( )

从某档案读取数据

feof( )

测试是否到了档案结束位置

ferror( )

测试档案操作是否正常

fseek( )

设定准备读取档案数据的位置

rewind( )

将准备读取档案数据位置,设定在档案起始位置

remove( )

档案的删除

 

 

fopen( ) 用于开启档案,档案在使用前是需先经过开启动作的

 

使用格式如下:

 

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

 

各项数据的定义如下所示:

 

1.     1.     *filename:档案指标,指的是欲开启的文件名称。

2.     2.     *mode:档案使用模式,指的是档案被开启之后,它的使用方式。

 

下面是档案开启之后,一般常使用的方式:

 

"r"

开启一个文字文件(text),供程序读取。

"w"

开启一个文字文件(text),供程序将数据写入此档案内。如果磁盘内不包含这个档案,则系统会自行建立这个档案。如果磁盘内包含这个档案,则此档案内容会被盖过而消失。

"a"

开启一个文字文件(text),供程序将数据写入此档案的末端。如果此档案不存在,则系统会自行建立此档案。

 

"rb"

开启一个二元文件(binary),供程序读取。

 

"wb"

开启一个二元文件,供程序将数据写入此档案内。如果磁盘内不包含这个档案,则系统会自行建立这个档案。如果磁盘内包含这个档案,此档案内容会被盖过而消失。

 

"ab"

开启一个二元文件(binary),供程序将数据写入此档案末端,如果此档案不存在,则系统会自行建立此档案。

 


 

fclose( ) 用于关闭档案,如果fclose( )执行失败,它的传回值是非零值

 

 

C语言中关闭档案主要有两个目的:

1.         1.         档案在关闭前会将档案缓冲区数据写入磁盘档案内,否则档案缓冲区数据会遗失。

2.         2.         一个C语言程序,在同一时间可开启的档案数量有限,一般是20个,如果你的程序很大,要开启超过20个档案时,你必须将暂时不用的档案关闭。

 

fprintf( ) 主要目的是供你将数据,以格式化方式写入某档案内

 

使用格式如下:

fprintf( fp ,  "……." , ………);

 

此函数控制打印区和打印和打印变量区的使用,格式和printf( )使用格式相同. fprintf( )printf( )两者唯一的差别是,printf( )会将数据打印在屏幕上,而fprintf( )会将数据打印在某个档案内。

 

 

#include <stdio.h>

 

void main()

{

    FILE *fp;

    int  var,i;

    int  sum = 0;

    float average;

    fp = fopen("data1.txt","w");     /* open file pointer */

   

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

    {

       printf("/1: input number %d here ==>  ",i+1);

       scanf("%d",&var);

       sum += var;

       fprintf(fp,"%d/n",var);

    }

    average = (float) sum / 5.0;

    fprintf(fp,"/2: The average is %6.2f",average);

    fclose(fp);

}

 


 

fscanf( ) 主要的目的是让我们从某个档案读取数据

 

使用格式如下:

fscanf( fp ,  "……." , ………);

 

 

fscanf( )函数和scanf( )函数两者之间最大的差别在,scanf( )函数主要用于从键盘输入读取数据,fscanf( )函数则是从fp档案指标所指的档案读取数据。

 

 

#include <stdio.h>

 

void main()

{

    FILE *fp;

    int  i,j,var;

    fp = fopen("data2.txt","r");     /* open file pointer */

  

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

    {

       for ( j = 0; j < 5; j++ )

       {

        fscanf(fp,"%d",&var);

        printf("%c",var);

       }

       printf("/n");

    }

    fclose(fp);

}

 

 

putc( ) 主要功能是将一个字符写入某档案内

 

格式如下

int putc( int ch, FILE *fp );

 

 

此函数如果执行成功,它的传回值是ch字符值,如果执行失败,它的传回值是EOF。且上述格式中,ch代表所欲输出的字符,fp则是档案指标。

下列为一个简单建立一个档案的程序应用。

 

1.         1.         #include <stdio.h>

2.         2.         void main()

3.         3.         {  FILE *fp;

4.         4.            char ch;

5.          5.         fp = fopen("sample.txt","w");

       /*开启一个文字文件(sample.txt),供程序将数据写入此档案内*/

6.         6.            printf("/1: Please input text here. /n");

7.         7.            while ( (ch = getche()) != '/r' )

       putc(ch,fp); /* 将读入之字符输出所设定的sample.txt档案内*/

8.         8.          

9.         9.            fclose(fp);  /*关闭指标为fp档案 */

10.    10.     }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

getc( ) 主要目的是某一个档案中,读取一个字符。,

 

使用格式如下:

int  getc(FILE  *fp);

 

 

当执行getc( )函数成功时,传回值是所读取的字符,如果所读取的是档案结束字符,则此值是EOF,在stdio.h内,此值是 -1

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值