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

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

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

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

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

c语言函数库第二章IO函数

c语言函数库

第二章(IO函数)

1.clearerr:

复位错误标志函数1

2.feof:

检测文件结束符函数2

3.ferror:

检测流上的错误函数3

4.fflush:

清除文件缓冲区函数4

5.fgetc:

从流中读取字符函数6

6.fgetpos:

取得当前文件的句柄函数7

7.fgets:

从流中读取字符串函数7

8.fopen、fclose:

文件的打开与关闭函数8

9.fprintf:

格式化输出函数10

10.fputc:

向流中输出字符函数11

11.fputs:

向流中输出字符串函数12

12.fread:

从流中读取字符串函数12

13.freopen:

替换文件中数据流函数13

14.fscanf:

格式化输入函数14

15.fseek:

文件指针定位函数15

16.fsetpos:

定位流上的文件指针函数16

17.ftell:

返回当前文件指针位置函数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

1.clearerr:

复位错误标志函数

函数原型:

voidclearerr(FILE*fp);

头文件:

#include

是否是标准函数:

函数功能:

复位错误标志,即:

使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函数复位错误标志。

2.feof:

检测文件结束符函数

函数原型:

intfeof(FILE*fp);

头文件:

#include

是否是标准函数:

函数功能:

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

检测文件是否结束。

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

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

返回值:

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

例程如下:

检测文件结束标志演示。

#include

intmain(void)

{

FILE*stream;

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

stream=fopen("test.txt","r");

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

fgetc(stream);

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

if(feof(stream))

printf("Havereachedtheendofthefile!

\n");

/*关闭该文件*/

fclose(stream);

return0;

}

例程说明:

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

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

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

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

(4)最后关闭文件。

注意:

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

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

3.ferror:

检测流上的错误函数

函数原型:

intferror(FILE*fp);

头文件:

#include

是否是标准函数:

函数功能:

检测流上的错误。

即:

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

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

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

返回值:

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

例程如下:

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

#include

intmain(void)

{

FILE*fp;

charch;

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

fp=fopen("test.txt","w");

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

ch=fgetc(fp);

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

if(ferror(fp))

{

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

printf("Errorreadingfromtest.txt!

\n");

/*复位错误标志*/

clearerr(fp);

}

/*关闭文件*/

fclose(fp);

return0;

}

例程说明:

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

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

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

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

4.fflush:

清除文件缓冲区函数

函数原型:

intfflush(FILE*fp);

头文件:

#include

是否是标准函数:

函数功能:

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

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

返回值:

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

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

返回EOF指出一个错误。

例程如下:

第一种方式读写文件

#include

#include

#include

#include

intmain(void)

{

FILE*stream1,*stream2;

chartest[20]="Thisisatest";

charres[20];

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

stream1=fopen("test.txt","w");

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

fwrite(test,15,1,stream1);

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

stream2=fopen("test.txt","r");

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

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

printf("%s",res);

else

printf("Readerror!

\n");

fclose(stream1);

fclose(stream2);

getch();

return0;

}

例程如下:

第二种方式读写文件

#include

#include

#include

#include

intmain(void)

{

FILE*stream1,*stream2;

chartest[20]="Thisisatest";

charres[20];

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

stream1=fopen("test.txt","w");

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

fwrite(test,15,1,stream1);

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

fflush(stream1);

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

stream2=fopen("test.txt","r");

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

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

printf("%s",res);

else

printf("Readerror!

\n");

fclose(stream1);

fclose(stream2);

getch();

return0;

}

例程说明:

例程如下:

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

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

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

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

实践证明,例程如下:

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

例程如下:

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

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

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

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

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

实践证明,例程如下:

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

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

例程如下:

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

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

因此读文件发生错误。

而例程如下:

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

注意:

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

5.fgetc:

从流中读取字符函数

函数原型:

intfgetc(FILE*fp);

头文件:

#include

是否是标准函数:

函数功能:

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

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

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

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

返回值:

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

返回EOF。

例程如下:

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

#include

#include

#include

intmain(void)

{

FILE*fp;

charstring[]="Thisisatest";

charch;

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

fp=fopen("test.txt","w+");

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

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

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

fseek(fp,0,SEEK_SET);

do

{

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

ch=fgetc(fp);

/*显示该字符*/

putch(ch);

}while(ch!

=EOF);

fclose(fp);

return0;

}

例程说明:

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

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

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

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

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

 

6.fgetpos:

取得当前文件的句柄函数

函数原型:

intfgetpos(FILE*stream,fpos_t*pos);

头文件:

#include

是否是标准函数:

函数功能:

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

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

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

返回值:

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

例程如下:

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

#include

#include

intmain(void)

{

FILE*fp;

charstring[]="Thisisatest";

fpos_tpos;

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

fp=fopen("test.txt","w+");

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

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

/*取得指针位置并存入&pos所指向的对象*/

fgetpos(fp,&pos);

printf("Thefilepointerisatbyte%ld\n",pos);

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

fseek(fp,3,0);

/*再次取得指针位置并存入&pos所指向的对象*/

fgetpos(fp,&pos);

printf("Thefilepointerisatbyte%ld\n",pos);

fclose(fp);

return0;

}

例程说明:

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

注意:

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

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

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

(2)再用fgetpos函数取得指针位置并存入&pos所指向的对象,此时,pos中的内容为14。

然后在屏幕上显示出Thefilepointerisatbyte14。

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

再次取得指针位置并存入&pos所指向的对象。

然后在屏幕上显示出Thefilepointerisatbyte3。

7.fgets:

从流中读取字符串函数

函数原型:

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

头文件:

#include

是否是标准函数:

函数功能:

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

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

返回值:

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

用feof或ferror判断是否出错。

例程如下:

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

#include

#include

intmain(void)

{

FILE*fp;

charstring[]="Thisisatest";

charstr[20];

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

fp=fopen("test.txt","w+");

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

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

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

fseek(fp,0,SEEK_SET);

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

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

/*显示该字符串*/

printf("%s",str);

fclose(fp);

return0;

}

例程说明:

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

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

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

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

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

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

8.fopen、fclose:

文件的打开与关闭函数

函数原型:

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

intfclose(FILE*fp);

头文件:

#include

是否是标准函数:

函数功能:

函数fopen:

打开一个流,即:

打开一个文件。

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

函数fclose:

关闭一个流,即:

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

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

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

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

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

如下表所示。

文件的打开方式

文件使用方式

意义

r

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

w

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

a

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

rb

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

wb

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

ab

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

r+

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

w+

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

a+

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

rb+

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

wb+

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

ab+

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

返回值:

fopen:

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

fclose:

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

例程如下:

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

#include

#include

intmain(void)

{

FILE*fp;

charbuf[11]="abcdefghij";

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

fp=fopen("test.txt","w");

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

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

/*关闭文件*/

fclose(fp);

return0;

}

例程说明:

(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