c语言函数库第二章IO函数Word格式.docx

上传人:b****1 文档编号:5200303 上传时间:2023-05-04 格式:DOCX 页数:58 大小:37.18KB
下载 相关 举报
c语言函数库第二章IO函数Word格式.docx_第1页
第1页 / 共58页
c语言函数库第二章IO函数Word格式.docx_第2页
第2页 / 共58页
c语言函数库第二章IO函数Word格式.docx_第3页
第3页 / 共58页
c语言函数库第二章IO函数Word格式.docx_第4页
第4页 / 共58页
c语言函数库第二章IO函数Word格式.docx_第5页
第5页 / 共58页
c语言函数库第二章IO函数Word格式.docx_第6页
第6页 / 共58页
c语言函数库第二章IO函数Word格式.docx_第7页
第7页 / 共58页
c语言函数库第二章IO函数Word格式.docx_第8页
第8页 / 共58页
c语言函数库第二章IO函数Word格式.docx_第9页
第9页 / 共58页
c语言函数库第二章IO函数Word格式.docx_第10页
第10页 / 共58页
c语言函数库第二章IO函数Word格式.docx_第11页
第11页 / 共58页
c语言函数库第二章IO函数Word格式.docx_第12页
第12页 / 共58页
c语言函数库第二章IO函数Word格式.docx_第13页
第13页 / 共58页
c语言函数库第二章IO函数Word格式.docx_第14页
第14页 / 共58页
c语言函数库第二章IO函数Word格式.docx_第15页
第15页 / 共58页
c语言函数库第二章IO函数Word格式.docx_第16页
第16页 / 共58页
c语言函数库第二章IO函数Word格式.docx_第17页
第17页 / 共58页
c语言函数库第二章IO函数Word格式.docx_第18页
第18页 / 共58页
c语言函数库第二章IO函数Word格式.docx_第19页
第19页 / 共58页
c语言函数库第二章IO函数Word格式.docx_第20页
第20页 / 共58页
亲,该文档总共58页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c语言函数库第二章IO函数Word格式.docx

《c语言函数库第二章IO函数Word格式.docx》由会员分享,可在线阅读,更多相关《c语言函数库第二章IO函数Word格式.docx(58页珍藏版)》请在冰点文库上搜索。

c语言函数库第二章IO函数Word格式.docx

返回当前文件指针位置函数17

18.fwrite:

向文件写入数据函数18

19.getc:

从流中读取字符函数18

20.getchar:

从标准输入文件中读取字符函数20

21.gets:

从标准输入文件中读取字符串函数20

22.perror:

打印系统错误信息函数21

23.printf:

产生格式化输出的函数21

24.putc:

向指定流中输出字符函数22

25.putchar:

向标准输出文件上输出字符23

26.puts:

将字符串输出到终端函数23

27.remove:

删除文件函数24

28.rename:

重命名文件函数25

29.rewind:

重置文件指针函数25

30.scanf:

格式化输入函数26

31.setbuf、setvbuf:

指定文件流的缓冲区函数27

32.sprintf:

向字符串写入格式化数据函数28

33.sscanf:

从缓冲区中读格式化字符串函数29

34.tmpfile:

创建临时文件函数29

35.tmpnam:

创建临时文件名函数30

36.ungetc:

把字符退回到输入流函数31

复位错误标志函数

函数原型:

voidclearerr(FILE*fp);

头文件:

#include<

stdio.h>

是否是标准函数:

函数功能:

复位错误标志,即:

使fp所指向的文件中的错误标志和文件结束标志置0。

当输入输出函数对文件进行读写出错时,文件就会自动产生错误标志,这样会影响程序对文件的后续操作。

clearerr函数就是要复位这些错误标志,也就是使fp所指向的文件的错误标志和文件结束标志置0,从而使文件恢复正常。

返回值:

例程如下:

复位错误标志演示。

#include<

intmain(void)

{

FILE*fp;

charch;

/*以写的方式打开一个文件名为test.txt的文件*/

fp=fopen("

test.txt"

"

w"

);

/*错误地从fp所指定的文件中读取一个字符,并打印它*/

ch=fgetc(fp);

if(ferror(fp))

{

/*如果此操作错误,就发布错误信息*/

printf("

Thisisaerrorreading!

\n"

/*复位错误标志*/

clearerr(fp);

}

/*关闭文件*/

fclose(fp);

return0;

}

例程说明:

(1)首先程序以只写的方式打开一个文件名为”test.txt”的文件。

这样,该文件就只能写而不能读了。

(2)程序企图应用fgetc函数从fp所指的文件中读出一个字符,这当然是违法的,因此文件自动产生错误标志。

(3)当用ferror函数检测出文件流存在错误时,就发布一条错误信息,并用clearerr函数清除fp指定的文件流所使用的错误标志,也就是使fp所指的文件的错误标志和文件结束标志置0。

这样原先的错误就不会对文件的后续操作产生影响。

注意:

ferror函数与clearerr函数应该配合使用。

也就是说,通过ferror函数检测出文件有错误标志后要用clearerr函数复位错误标志。

检测文件结束符函数

intfeof(FILE*fp);

检测流上的文件结束符,即:

检测文件是否结束。

应用该函数可以判断一个文件是否到了结尾。

在读取一个未知长度文件时,这个函数很有用。

遇到文件结束符返回非0,否则返回0。

检测文件结束标志演示。

{

FILE*stream;

/*以只读方式打开test.txt文件*/

stream=fopen("

r"

/*从文件中读取一个字符*/

fgetc(stream);

/*检测是否是EOF,即结束标志*/

if(feof(stream))

Havereachedtheendofthefile!

/*关闭该文件*/

fclose(stream);

(1)首先程序打开一个名为test.txt的文件。

(2)应用fgetc函数从一个名为test.txt的文件中读取一个字符。

(3)判断它是否为文件结束标志EOF,如果是文件结束标志,就说明该文件已经结束,于是在屏幕上显示一条提示信息。

如果不是文件的结束标志,就说明文件还未结束,信息不显示。

(4)最后关闭文件。

在实际应用中,feof函数很重要,利用它程序员就可以很方便地判断当前的文件是否结束,从而进行不同的处理。

例如,在从一个未知长度的文件中读取信息时,就可以利用feof函数判断什么时候该文件读完。

检测流上的错误函数

intferror(FILE*fp);

检测流上的错误。

即:

检查文件在使用各种输入输出函数进行读写时是否出错。

当输入输出函数对文件进行读写时出错,文件就会产生错误标志。

应用这个函数,就可以检查出fp所指向的文件操作是否出错,也就是说是否有错误标志。

未出错返回值为0,否则返回非0,表示有错。

应用ferror函数检查流上的错误。

%c\n"

ch);

Errorreadingfromtest.txt!

(1)首先以只写的方式打开一个文件名为”test.txt”的文件。

程序企图用fgetc函数从fp所指的文件中读出一个字符,这样就是非法操作,也就是说在用fgetc函数进行读取字符时出错了,因此文件产生错误标志。

(2)再用ferror函数来检测输入输出函数进行文件读写操作时是否出错,结果发现有错,因此函数返回一个非0整型数,并提示出错信息。

清除文件缓冲区函数

intfflush(FILE*fp);

清除一个流,即清除文件缓冲区,当文件以写方式打开时,将缓冲区内容写入文件。

也就是说,对于ANSIC规定的是缓冲文件系统,函数fflush用于将缓冲区的内容输出到文件中去。

如果成功刷新,fflush返回0。

指定的流没有缓冲区或者只读打开时也返回0值。

返回EOF指出一个错误。

第一种方式读写文件

string.h>

conio.h>

io.h>

intmain(void)

FILE*stream1,*stream2;

chartest[20]="

Thisisatest"

;

charres[20];

/*以写的方式打开文件test.txt*/

stream1=fopen("

/*向文件写入字符串*/

fwrite(test,15,1,stream1);

/*以读的方式打开文件test.txt*/

stream2=fopen("

/*将文件内容读入缓冲区*/

if(fread(res,15,1,stream2))

%s"

res);

else

Readerror!

fclose(stream1);

fclose(stream2);

getch();

第二种方式读写文件

/*将缓冲区的内容写入文件*/

fflush(stream1);

中定义了两个文件指针stream1和stream2。

(1)首先以写的方式打开文件test.txt,用指针stream1指向该文件,并向文件中写入字符串"

(2)不关闭该文件,以读的方式打开文件test.txt,并用指针stream2指向该文件,试图将刚刚写入的字符串读入到内存缓冲区中。

如果读入成功,打印出该字符串,否则报错。

实践证明,例程如下:

的输出结果是在屏幕上显示错误信息Readerror!

(2)调用fflush函数将缓冲区的内容写入文件。

(3)不关闭该文件,以读的方式打开文件test.txt,并用指针stream2指向该文件,试图将刚刚写入的字符串读入到内存缓冲区中。

的输出结果是在屏幕上显示字符串"

产生这样的效果原因在于:

中将文件打开后,指针stream1指向的是该文件的内存缓冲区,将字符串写入后也只是写到了文件的内存缓冲区中,而并没有写到磁盘上的文件中。

而当以读的方式打开该文件时,该文件中的内容实际为空,也就是stream2指向的缓冲区中内容为空。

因此读文件发生错误。

而例程如下:

中,在写完文件后调用函数fflush,将缓冲区的内容写到文件中,这样再以读的方式打开该文件时,文件中已经存有了字符串,因此可以正常读出。

如果在写完文件后调用函数fclose关闭该文件,同样可以达到将缓冲区的内容写到文件中的目的,但是那样系统开销较大。

从流中读取字符函数

intfgetc(FILE*fp);

从流中读取字符,即从fp所指定的文件中取得下一个字符。

这里需要注意,在每取完一个字符时fp会自动向下移动一个字节。

这样编成时,程序员就不用再对fp控制了。

这种功能在许多读写函数中都有体现。

返回所得到的字符,若读入错误。

返回EOF。

应用fgetc函数从文件中自动读取字符。

charstring[]="

/*以读写方式打开一个名为test.txt的文件*/

w+"

/*向文件中写入字符串string*/

fwrite(string,strlen(string),1,fp);

/*将fp指针指向文件首*/

fseek(fp,0,SEEK_SET);

do

/*从文件中读一个字符*/

/*显示该字符*/

putch(ch);

}while(ch!

=EOF);

fclose(fp);

(1)首先程序先以读写方式打开一个名为test.txt的文件,并向该文件中写入一个字符串。

(2)再应用fseek函数将文件指针fp定位在文件的开头,再循环地将字符逐一读出。

这里每读出一个字符,指针fp会自动地向后移一个字节,直至读到文件尾,即EOF标志,循环才停止。

因为fgetc函数的返回值为得到的字符,所以用一个字符型变量ch来接受读出的字符。

(3)最后的运行结果是在屏幕上打印出Thisisatest字符串。

 

取得当前文件的句柄函数

intfgetpos(FILE*stream,fpos_t*pos);

取得当前文件的指针所指的位置,并把该指针所指的位置数存放到pos所指的对象中。

pos值以内部格式存储,仅由fgetpos和fsetpos使用。

其中fsetpos的功能与fgetpos相反,为了详细介绍,将在后节给与说明。

成功返回0,失败返回非0,并设置errno。

应用fgetpos函数取得当前文件的指针所指的位置。

fpos_tpos;

/*以读写方式打开一个名为test.txt的文件*/

/*将字符串写入文件*/

/*取得指针位置并存入&

pos所指向的对象*/

fgetpos(fp,&

pos);

Thefilepointerisatbyte%ld\n"

pos);

/*重设文件指针的位置*/

fseek(fp,3,0);

/*再次取得指针位置并存入&

(1)首先,程序以读写方式打开一个名为test.txt的文件,并把字符串"

写入文件。

字符串共14个字节,地址为0~13。

用fwrite函数写入后,文件指针自动指向文件最后一个字节的下一个位置。

即这时的fp的值应该是14。

(2)再用fgetpos函数取得指针位置并存入&

pos所指向的对象,此时,pos中的内容为14。

然后在屏幕上显示出Thefilepointerisatbyte14。

(3)再用fseek函数重设文件指针的位置,让fp的值为3,即指向文件中第4个字节。

再次取得指针位置并存入&

pos所指向的对象。

然后在屏幕上显示出Thefilepointerisatbyte3。

从流中读取字符串函数

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

从fp所指的文件中读取一个长度为(n-1)的字符串,并将该字符串存入以string为起始地址的缓冲区中。

fgets函数有三个参数,其中string为缓冲区首地址,n规定了要读取的最大长度,fp为文件指针。

返回地址string,若遇到文件结束符或出错,返回NULL。

用feof或ferror判断是否出错。

用fgets函数从文件中读取字符串。

charstr[20];

/*以读写的方式打开一个名为test.txt的文件*/

/*文件指针定位在文件开头*/

/*从文件中读一个长为strlen(string)的字符串*/

fgets(str,strlen(string)+1,fp);

/*显示该字符串*/

str);

(1)首先,以读写的方式打开一个名为test.txt的文件,并将字符串写入文件。

应用fseek函数将文件指针定位在文件开头。

(2)从文件中读一个长为strlen(string)的字符串,这里应注意第二个参数若为n,则表示从fp所指的文件中读取一个长度为(n-1)的字符串。

因此,这里的参数为strlen(string)+1,表示读取一个长度为strlen(string)的字符串。

把字符串读到以str为首地址的数组中。

(3)最后显示该字符串。

文件的打开与关闭函数

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

intfclose(FILE*fp);

函数fopen:

打开一个流,即:

打开一个文件。

该函数有两个参数,filename是需要打开文件的文件名,type是打开文件的方式。

函数fclose:

关闭一个流,即:

关闭一个文件,并释放文件缓冲区。

fclose函数与fopen函数是相对的两个函数。

fclose函数的参数是指向文件的指针,应用该函数用以在程序结束之前关闭文件,并释放文件缓冲区。

这样可以保证文件的数据不流失。

在这里,特别列出所有的文件打开方式,以供大家参考。

如下表所示。

文件的打开方式

文件使用方式

意义

r

只读打开一个文本文件,只允许读数据

w

只写打开或建立一个文本文件,只允许写数据

a

追加打开一个文本文件,并在文件末尾写数据

rb

只读打开一个二进制文件,只允许读数据

wb

只写打开或建立一个二进制文件,只允许写数据

ab

追加打开一个二进制文件,并在文件末尾写数据

r+

读写打开一个文本文件,允许读和写

w+

读写打开或建立一个文本文件,允许读写

a+

读写打开一个文本文件,允许读,或在文件末追加数据

rb+

读写打开一个二进制文件,允许读和写

wb+

读写打开或建立一个二进制文件,允许读和写

ab+

读写打开一个二进制文件,允许读,或在文件末追加数据

fopen:

FILE类型,如果打开的文件存在,返回指向该文件的指针;

如果打开的文件不存在,则在指定的目录下建立该文件打开,并返回指向该文件的指针。

fclose:

整型,有错返回非0,否则返回0。

打开并输出一个文件,然后关闭。

charbuf[11]="

abcdefghij"

/*以写方式打开文件名为test.txt的文件*/

/*把字符串写入文件中*/

fwrite(&

buf,strlen(buf),1,fp);

/*关闭文件*/

(1)首先开辟一个11个字节大小的缓冲区buf,也就是数组,但预先只能存入10个字符。

这是因为C语言中规定数组存放字符串时,最后一个字节要以’/0’结尾,作为结束标志,并由系统自动在字符串末尾添加’/0’标志。

因此,11个字节大小的缓冲区只存放一个长10个字节的字符串。

(2)用fopen函数以写的方式打开一个名为test.txt的文件并将字符串写入文件。

调用fclose函数关闭该文件。

(3)fclose函数与fopen函数正好相对,其作用是关闭一个文件。

当使用fopen函数打开一个文件时,会返回一个指向该文件的指针。

在该例程中这个指针被赋值给fp,也就是说fp指向了test.txt这个文件。

而当调用fclose函数关闭该文件,即fclose(fp)时,fp就不再指

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

当前位置:首页 > PPT模板 > 商务科技

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

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