常用C函数(4)

2019-03-27 19:34

fp = fopen(\ /* 将字符串写入文件 */

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

/* 取得指针位置并存入&pos所指向的对象 */ fgetpos(fp, &pos);

printf(\ /*重设文件指针的位置*/

fseek(fp,3,0);

/* 再次取得指针位置并存入&pos所指向的对象 */ fgetpos(fp, &pos);

printf(\fclose(fp); return 0; }

例程说明:

(1)首先,程序以读写方式打开一个名为test.txt的文件,并把字符串\写入文件。注意:字符串共14个字节,地址为0~13。用fwrite函数写入后,文件指针自动指向文件最后一个字节的下一个位置。即这时的fp的值应该是14。

(2)再用fgetpos函数取得指针位置并存入&pos所指向的对象,此时, pos中的内容为14。然后在屏幕上显示出The file pointer is at byte 14。 (3)再用fseek函数重设文件指针的位置,让fp的值为3,即指向文件中第4个字节。 再次取得指针位置并存入&pos所指向的对象。然后在屏幕上显示出The file pointer is at byte 3。

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

函数原型:char *fgets(char *string, int n, FILE *fp); 头文件:#include 是否是标准函数:是 函数功能:从fp所指的文件中读取一个长度为(n-1)的字符串,并将该字符串存入以string为起始地址的缓冲区中。fgets函数有三个参数,其中string为缓冲区首地址,n规定了要读取的最大长度,fp为文件指针。

返回值:返回地址string,若遇到文件结束符或出错,返回NULL。用feof 或ferror判断是否出错。

例程如下:用fgets函数从文件中读取字符串。

#include #include int main(void) {

FILE *fp;

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

/* 以读写的方式打开一个名为test.txt的文件 */ fp = fopen(\ /* 将字符串写入文件 */ fwrite(string, strlen(string), 1, fp); /* 文件指针定位在文件开头*/

fseek(fp, 0, SEEK_SET);

/* 从文件中读一个长为strlen(string)的字符串 */ fgets(str, strlen(string)+1, fp);

/* 显示该字符串 */ printf(\fclose(fp); return 0; }

例程说明:

(1)首先,以读写的方式打开一个名为test.txt的文件,并将字符串写入文件。 应用fseek函数将文件指针定位在文件开头。

(2)从文件中读一个长为strlen(string)的字符串,这里应注意第二个参数若为n,则表示从fp所指的文件中读取一个长度为(n-1)的字符串。因此,这里的参数为strlen(string)+1,表示读取一个长度为strlen(string)的字符串。把字符串读到以str为首地址的数组中。 (3)最后显示该字符串。

fopen、fclose:文件的打开与关闭函数

函数原型:FILE *fopen(char *filename, char *type);

int fclose(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 int main(void) {

FILE *fp;

char buf[11] = \

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

/*把字符串写入文件中*/ fwrite(&buf, strlen(buf), 1, fp); /* 关闭文件 */ fclose(fp); return 0; }

例程说明:

(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就不再指向该文件了,相应的文件缓冲区也被释放。

注意:用户在编写程序时应该养成及时关闭文件的习惯,如果不及时关闭文件,文件数据有可能会丢失。

fprintf:格式化输出函数

函数原型:int fprintf(FILE *fp, char *format[, argument,...]); 头文件:#include 是否是标准函数:是

函数功能:把argument的值以format所指定的格式输出到fp指向的文件中。这个函数理解起来和printf类似,在一般的使用中,第二个参数可以是一个字符串的头指针,也可以就是一个字符串。例如:fprintf(fp, \,意思就是把字符串Cannot open this file!!输出到文件fp中去。该函数一般用作终端的出错提示或是在磁盘中生成错误报告。

返回值:如果正确返回实际输出字符数,若错误则返回一个负数。 例程如下用fprintf函数向终端发出出错提示。

#include int main(void) {

FILE *fp;

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

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

fprintf(stderr, \

return 1; /*若该文件不能打开,在屏幕上显示出错提示*/ }

/*若该文件能够打开,在屏幕上显示正确提示*/ fprintf(stderr,\return 0;

}

例程说明:

(1)首先,以只读方式打开名为test.txt的文件,如果文件不能打开,这返回NULL。 (2)若该文件不能打开,在屏幕上显示出错提示。 (3)若该文件能够打开,在屏幕上显示正确提示。

注意:该函数中第一个参数是stderr,这是C语言中标准出错输出指针,它指向标准的出错输出文件,也就是显示器。因为,在操作系统中,I/O设备都是用文件进行管理的,因此设备都配有相应的控制文件。在C语言中,有三个文件与终端相联系,因此系统定义了三个文件指针。见下表:

设备文件 标准输入 标准输出 文件指针 stdin stdout 标准文件指针

stderr 标准出错输出

在系统运行时,程序自动打开这三个标准文件。

本例程的运行结果为: (1)如果不能打开文件:

Cannot open this file!!

(2)如果可以打开文件:

Have open this file!!

例程如下用fprintf函数在磁盘中生成错误报告。

#include int main(void) {

FILE *fp1,*fp2;

/*以只读方式打开名为test.txt的文件*/ if ((fp1 = fopen(\ == NULL) { /*若文件打不开,则生成错误报告*/ fp2=fopen(\ fprintf(fp2, \return 1; } return 0; }

例程说明:

(1)首先,以只读方式打开名为test.txt的文件,如果文件不能打开,这返回NULL。 (2)若该文件不能打开,则以写的方式打开一个名为report.txt的文件,并按照格式要求向文件中写入字符串\,即生成了一个错误报告。

注意:这里函数fprintf的第一个参数为文件指针,是用户自定义的,与上一例程的系统定义的文件指针stderr不同。fprintf函数与printf函数的使用类似,其实printf函数是fprintf函数的一个特例,printf函数只能向标准输出文件(显示器)输出数据,而fprintf函数也可以向一般用户定义的文件输出数据。

fputc:向流中输出字符函数

函数原型:int fputc(char ch, FILE *fp); 头文件:#include 是否是标准函数:是

函数功能:将字符ch输出到fp指向的文件中。该函数与前边提到的fgetc是相对的,第一个参数ch是字符型变量,函数将该变量中的字符输出到fp指向的文件中。

返回值:成功返回该字符,否则返回非0。 例程如下应用fputc向文件输出字符。

#include int main(void) { /*初始化字符数组str */

char str[] = \int i = 0; /*将数组中的字符循环输出至屏幕*/ while (str[i]) {

fputc(str[i], stdout); i++; } return 0; }

例程说明:

(1)首先初始化字符数组str。这里应当知道,在C语言中初始化数组,系统会自动在数组最后添加\,以表示该字符串结束。

(2)将数组中的字符循环输出至屏幕。这里注意两点:

? 该循环以\作为结束标志,即循环碰到\时结束。

? 函数fputc的第二个参数是stdout,前面已讲过它代表标准输出文件指针,这

样就是在屏幕上显示该字串。

本例程的运行结果为:

This is a test

fputs:向流中输出字符串函数

函数原型:int fputs(char *string, FILE *fp); 头文件:#include 是否是标准函数:是

函数功能:将string所指的字符串输出到fp指向的文件中。该函数与fgets相对,第一个参数为字符串指针。与fgets函数不同的是,fputs函数没有字符串长度的限制,只是将string指向的字符串输出到文件中。

返回值:成功返回0,否则返回非0。

例程如下应用fputs函数向文件中输出字符串。

#include int main(void) {

FILE *fp;

char str[]=\


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

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

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

马上注册会员

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