c语言第九章文件,c语言课件——第九章文件.doc

c语言课件——第九章文件

我们现在设计的输入、输出对象都是计算机终端

文件 stdin stdout stderr

输入的数据量较大时,采用文件的方式

数据又分为:字符代码(文本、正文,须转换)和二进制文件(占用空间小,输入输出速度快)

例: 12.367

采用二进制占 4 个字节

采用文本,占 6 个字节

磁盘文件系统:

缓冲文件系统

可以相应减少读写盘次数(由系统代替用户做)

非缓冲文件系统

与低层连接紧密,所以执行效率高(与OS连接较紧密)

标准I/O提供4种读写文件的方法 :

① R/W 一个字符 fgetc fprintc

② R/W 一个字符串 fgets fprints

③ 格式化R/W fscanf fprintf

④ R/W一个记录 fread fwrite

标准I/O

函数相当于终端I/O

函数作用fgetcgetchar输入一个字符fputcputchar输出一个字符fgetsgets输入一个字符串fputsputs输出一个字符串fscanfscanf按指定的格式输入若干个变量的值fprintfprintf按指定的格式输出若干个数据 对于系统I/O(非缓冲文件系统),只提供按记录读写的函数:read和write。

例9.1:将键盘输入的文本存入文件file.txt中。

#include

main ( )

{ ① FILE *fp;

char ch ;

② if ((fp=fopen ( "file.txt", "w")) == NULL)

{ printf ("Can not open this file !\n");

exit ( 0 );

}

while (( ch = getchar ( ))!= '\n')

③ fputc ( ch, fp);

④ fclose (fp);

}

要调用一个文件,需要有以下的信息:文件的当前位置与该文件对应的内存缓冲区的地址、文件操作方式等。所以缓冲型为每个文件开辟一个“文件信息区”。采用结构的方式定义“信息区”:

typedef struct {……

} FILE;

FILE *p1;

fopen函数是用来“打开”文件的,文件名一项可带路径,例"c:\\tc\\file.txt",

第二个参数为文件使用方式,见下表:(p314)

r 只读为输入打开一个字符文件w只写为输出打开一个字符文件a追加向字符文件尾增补数据rb只读为输入打开一个二进制文件wb只写为输出打开一个二进制文件ab追加向二进制文件尾增补数据r+读写为读/写打开一个字符文件w+读写为读/写建立一个新的字符文件a+读写为读/写打开一个字符文件rb+读写为读/写打开一个二进制文件wb+读写为读/写建立一个新的二进制文件ab+读写为读/写打开一个二进制文件fopen函数有一个返回值,它是一个地址值,指向被打开文件的文件信息区的起始地址。如果操作失败,则返回NULL 。

③将ch写到fp所指向的文件中

④关闭fp所指向的文件。

例9.4:统计文件中的单词个数。(P319)

#include

main(int argc,char *argv[])

{ FILE *fp;

char ch;

int white=1;

int count=0;

if((fp=fopen(argv[1],"r"))==NULL)

{ printf("can't open file %s.",argv[1]);

exit(0);

}

while((ch=fgetc(fp))!=EOF)

switch(ch)

{ case' ':

case'\t':

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值