C语言文件关闭函数fclose(文件指针)是什么?

Python015

C语言文件关闭函数fclose(文件指针)是什么?,第1张

fclose函数为C语言标准库函数,用来关闭一个已打开的文件

该函数在stdio.h中声明,原型为:

intfclose(FILE*fp)

当fclose被调用时,一个打开的文件(以文件指针fp标识)会被关闭,关闭后,无法再对fp执行读写操作。

如果关闭成功,返回0,否则返回负值。C语言文件操作的标准流程为

1、fopen打开文件;

2、通过各种读写函数,读写文件;

3、所有操作结束后,调用fclose关闭文件。

C语言

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

/*根据你提供的两张图修改*/

//第一个:怎么指定导出一个信息,比如只导出陈文这一个信息

void save_name(char *name)

{

if(name == NULL)

{

printf("参数为空\n")

exit(1)

}

char college[128] = {0}

FILE *fp

if((fp = fopen("C:\\Users\\AI\Desktop\\未来就在眼前.xls", "wb")) == NULL)

{

printf("无法打开文件\n")

exit(1)

}

sprintf(college, "%s\n", name)

fprintf(fp, "%s", college)

fclose(fp)

}

//第二个:怎么指定的导出一整行的信息,比如导出第2行的,

void save_line(int line)

{

if(line < 0 || line >= N)

{

printf("参数行号不正确\n")

exit(1)

}

char college[128] = {0}

FILE *fp

if((fp = fopen("C:\\Users\\AI\Desktop\\未来就在眼前.xls", "wb")) == NULL)

{

printf("无法打开文件\n")

exit(1)

}

sprintf(college, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n", message[line].province, message[line].name, message[line].sex,

message[line].age, message[line].nation, message[line].school, message[line].student_id)

fprintf(fp, "%s", college)

fclose(fp)

}

//第三个:怎么通过确定陈文这个信息从而导出一整行的信息。

void save_match(char *name)

{

if(name == NULL)

{

printf("参数为空\n")

exit(1)

}

char college[128] = {0}

FILE *fp

int i

if((fp = fopen("C:\\Users\\AI\Desktop\\未来就在眼前.xls", "wb")) == NULL)

{

printf("无法打开文件\n")

exit(1)

}

for(i = 0 i < N i++)

{

if(strcmp(message[i].name, name) == 0) // 比较姓名是否相同

{

sprintf(college, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n", message[i].province, message[i].name, message[i].sex,

message[i].age, message[i].nation, message[i].school, message[i].student_id)

fprintf(fp, "%s", college)

break

}

}

fclose(fp)

}

c语言文件类型指针是通过FILE *fp这种形式进行定义的。

关于FILE结构在VC6中有如下定义:

#ifndef _FILE_DEFINED

struct _iobuf {

char *_ptr //文件输入的下一个位置

int _cnt //当前缓冲区的相对位置

char *_base //指基础位置(即是文件的起始位置) 

int _flag //文件标志

int _file //文件描述符id

int _charbuf //检查缓冲区状况,如果无缓冲区则不读取

int _bufsiz //文件缓冲区大小

char *_tmpfname //临时文件名

       }

typedef struct _iobuf FILE

#define _FILE_DEFINED

#endif

C程序用不同的FILE结构管理每个文件。程序员可以使用文件,但是不需要知道FILE结构的细节。实际上,FILE结构是间接地操作系统的文件控制块(FCB)来实现对文件的操作的,如下图:

上面图中的_file实际上是一个描述符,作为进入打开文件表索引的整数。

文件是存放在物理磁盘上的,包括文件控制块(FCB)和数据块。文件控制块通常包括文件权限、日期(创建、读取、修改)、拥有者、文件大小、数据块信息。数据块用来存储实际的内容。当打开一个文件时,程序会将物理磁盘上的文件数据块读入到内存,然后通过文件指针的移动读取内存中的文件数据。

相关函数:

FILE *fopen( char *file, char *open_mode )//打开文件,读文件到内存,返回文件信息结构指针

int fread( char s, int size, int num, FILE *fp )//按字节读取文件内容到s中

int fwrite( char s, int size, int num, FILE *fp )//按字节将s地址中的数据写到文件中

char *fgets( char *s, int max_size, FILE *fp)//读一行数据到缓冲区s中

int fseek( FILE *fp, long offset, int whence)//移动文件指针到指定位置

void rewind(FILE *fp)//回到文件头

long ftell(FILE *fp)//得到当前文件偏移位置

fclose(fp)//关闭文件,刷新缓存到物理磁盘上