常用C函数(5)

2019-03-27 19:34

/*以写的方式打开名为test.txt的文件*/ fp=fopen(\ /*将字符串写入文件*/ fputs(str,fp); fclose(fp); return 0; }

例程说明:

(1)首先用字符数组str存储一个字符串,并以写的方式打开名为test.txt的文件。 (2)再用fputs函数将该字符串输出到test.txt的文件中。

fread:从流中读取字符串函数

函数原型:int fread(void *buf, int size, int count, FILE *fp); 头文件:#include 是否是标准函数:是 函数功能:从fp指向的文件中读取长度为size 的count个数据项,并将它输入到以buf为首地址的缓冲区中。此时,文件指针fp会自动增加实际读入数据的字节数,即fp指向最后读入字符的下一个字符位置。

返回值:返回实际读入数据项的个数,即count值。若遇到错误或文件结束返回0。 例程如下应用fread函数从文件中读取数据到缓冲区。

#include #include int main(void) {

FILE *fp;

char str[] = \char buf[20];

if ((fp = fopen(\ == NULL) {

fprintf(stderr,

\return 1; }

/* 向文件中写入字符串数组中的数据 */ fwrite(str, strlen(str), 1, fp);

/* 将文件指针定位到文件开头 */ fseek(fp, SEEK_SET, 0);

/* 把文件中的数据读出并显示 */ fread(buf, strlen(str), 1, fp); printf(\ fclose(fp); return 0; }

例程说明: (1)程序首先以读写方式打开名为test.txt的文件。这里有一个判断,若打开文件失败,则在屏幕上显示出错信息。

(2)应用fwrite函数向文件写入数据。有关fwrite函数后面做详细介绍。 (3)应用fseek函数将文件指针定位到文件开头。

(4)应用fread函数把文件中的数据读入内存。这里读取一个长度为strlen(str)的字符串,并将该字符串存入以buf为首地址的内存缓冲区中。 (5)显示该字符串。

freopen:替换文件中数据流函数

函数原型:FILE *freopen(char *filename, char *type, FILE *fp); 头文件:#include 是否是标准函数:是

函数功能:关闭fp所指向的文件,并将该文件中的数据流替换到filename所指向的文件中去。该函数共三个参数:第一个参数filename是文件流将要替换到的文件名路径;第二个参数type是文件打开的方式,它与fopen中的文件打开方式类似;第三个参数fp是要被替换的文件指针。

返回值:返回一个指向新文件的指针,即指向filename文件的指针。若出错,则返回NULL。

例程如下关闭一个终端,并将数据流替换至一个新文件中。

#include int main(void) {

FILE *Nfp;

/* 替换标准输出文件上的数据流到新文件test.txt */ if (Nfp=freopen(\ == NULL)

fprintf(stderr, \

/* 标准输出文件上的数据流将会被替换到新文件中 */ printf(\

/* 关闭标准输出文件 */ fclose(stdout);

/*关闭新生成的文件*/ fclose(Nfp); return 0; }

例程说明:

(1)首先,程序以写的方式打开名为test.txt的文件,将标准输出文件上的数据流\will go into a file.\替换到新生成的文件test.txt中。freopen函数返回一个指向新文件的指针,即指向文件test.txt的指针,并将它存放到Nfp中。 (2)然后关闭标准输出文件,fclose(stdout)。 (3)最后关闭新生成的文件fclose(Nfp)。

(4)本程序的执行结果是在当前目录下生成一个文件test.txt,并将原终端的数据流\重新写入test.txt文件中。

fscanf:格式化输入函数

函数原型:int fscanf(FILE *fp, char *format[,argument...]);

头文件:#include 是否是标准函数:是 函数功能:从fp所指向的文件中按format给定的格式读取数据到argument所指向的内存单元。其中argument是指针,指针类型要与输入的格式format相一致。例如:fscanf(stdin, \;&i是整型的指针,输入的格式format也要为整型,即\。

返回值:返回已输入的数据个数。若错误或文件结束返回EOF。 例程如下应用fscanf函数从终端向内存输入数据。

#include #include int main(void) {

char ch;

printf(\

/* 从标准输入文件中读取一个字符,并送至ch */ if (fscanf(stdin, \

printf(\ was: %c\\n\else {

/*出错提示*/

fprintf(stderr, \exit(1); } return 0; }

例程说明:

(1)首先,程序提示用户从键盘输入一个字符。这时,标准输入文件指针stdin指向该字符。 (2)调用fscanf函数从标准输入文件中读取一个字符,并送至ch。这里应该注意两点:

? fscanf函数的第一个参数不是用户定义的文件指针,而是系统定义的标准输入

文件指针stdin。但用法与用户定义的文件指针类似。 ? &ch是指向字符型数据的指针,因此,输入的格式format也要为字符型\,

它们必须保持一致。

(3)该函数的使用与scanf类似。其实,scanf函数是fscanf函数的一个特例,它只能从标准输入文件(键盘终端)中输入数据。而fscanf函数则也可以从一般用户定义的文件中输入数据。

fseek:文件指针定位函数

函数原型:int fseek(FILE *fp, long offset, int base); 头文件:#include 是否是标准函数:是 函数功能:重定位流上的文件指针,即将fp指向的文件的位置指针移向以base为基准,以offset为偏移量的位置。该函数有三个参数:fp为文件指针,offset为偏移量,即位移offset个字节,base为指针移动的基准,即起始点。其中,基准base用0、1或2表示。在ANSI C标准指定的名字如下表

ANSI C标准指定的起始点名字

起始点 文件当前位置 名字 SEEK_CUR 数字代码 1 文件开始位置 文件末尾位置 SEEK_SET SEEK_END 0 2

偏移量用长整型数表示。ANSI C标准规定,在数的末尾加L就表示长整型数。该函数在随机读取较长的顺序文件时是很有用的。

返回值:成功返回0,否则返回非0。 例程如下文件指针的定位演示。

#include void main( void ) {

FILE *fp; char line[81]; int result;

/*以读写的方式打开打开名为test.txt的文件*/ fp = fopen( \if( fp == NULL )

printf( \!\\n\else {

/*按照规定格式将字符串写入文件*/

fprintf( fp, \

\ /*将文件指针定位到离文件头23个字节处*/ result = fseek( fp, 23L, SEEK_SET); if( result )

perror( \else {

printf( \ /*从fp指向的文件中读取字符串*/ fgets( line, 80, fp );

/*显示读取的字符串*/ printf( \ } fclose(fp); } }

例程说明:

(1)首先,程序以读写的方式打开打开名为test.txt的文件。 (2)然后,应用fprintf函数按照规定格式将字符串\'test.txt'.\\n\写入文件。 (3)再将文件指针定位到离文件头23个字节处,即将文件指针fp定位在字符串\the file 'test.txt'.\\n\的开头。

(4)然后,应用fgets函数从fp指向的文件中读取字符串,并显示在屏幕上。 本程序的运行结果为在屏幕上显示出以下字符串:

File pointer is set to middle of first line. This is the file 'test.txt'.

fsetpos:定位流上的文件指针函数

函数原型:int fsetpos(FILE *fp, const fpos_t *pos); 头文件:#include 是否是标准函数:是

函数功能:将文件指针定位在pos指定的位置上。该函数的功能与前面提到的fgetpos相反,是将文件指针fp按照pos指定的位置在文件中定位。pos值以内部格式存储,仅由fgetpos和fsetpos使用。

返回值:成功返回0,否则返回非0。 例程如下应用fsetpos函数定位文件指针。

#include void main( void ) {

FILE *fp; fpos_t pos;

char buffer[50];

/*以只读方式打开名为test.txt的文件*/ if( (fp = fopen( \printf( \else {

/*设置pos值*/

pos = 10;

/*应用fsetpos函数将文件指针fp按照 pos指定的位置在文件中定位*/

if( fsetpos( fp, &pos ) != 0 ) perror( \else

{

/*从新定位的文件指针开始读取16个字符到buffer缓冲区*/ fread( buffer, sizeof( char ), 16, fp ); /*显示结果*/

printf( \ } } fclose( fp ); }

例程说明:

(1)首先,程序以只读方式打开名为test.txt的文件。在这里,test.txt文件中已存入字符串This is a test for testing the function of fsetpos.

(2)将pos设置为10。应用fsetpos函数将文件指针fp按照pos指定的位置在文件中定位。这样文件指针fp指向字符串中test的字母t。 (3)再从新定位的文件指针开始读取16个字符到buffer缓冲区,也就是说读取字符串\到缓冲区buffer。

(4)最后显示结果:16 bytes at byte 10: test for testing 。


常用C函数(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:数据库系统原理参考答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: