C语言文件操作

文件:磁盘上的文件是文件。

在程序设计中,我们一般谈的文件有两种:程序文件、数据文件

1.程序文件:
包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀 为.exe)。

2.数据文件
文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。

我们主要讲的是数据文件,根据数据的组织形式,数据文件被称为文本文件或者二进制文件。
数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件。
如果要求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文本文件。

文件缓冲区:
ANSIC 标准采用“缓冲文件系统”处理的数据文件的,所谓缓冲文件系统是指系统自动地在内存中为程序中每一个正在 使用的文件开辟一块“文件缓冲区”。从内存向磁盘输出数据会先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘 上。如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐 个地将数据送到程序数据区(程序变量等)。缓冲区的大小根据C编译系统决定的(看不懂看下面)
这就相当于你嗑瓜子,垃圾桶离你很远的时候,你难道要吃一个跑过去扔一个吗?那么我们就是嗑一把瓜子后,把瓜子皮一次送往垃圾桶,而文件缓冲区就相当于你聚瓜子皮的地方,我们把东西先写好放在内存中,等到不用了,内存一次写到硬盘中。

在c程序中我们读写文件时,都需要文件指针,一般都在stdio.h中声明了;

FILE* pf;//文件指针变量

定义pf是一个指向FILE类型数据的指针变量。可以使pf指向某个文件的文件信息区(是一个结构体变量)。通过该文 件信息区中的信息就能够访问该文件。也就是说,通过文件指针变量能够找到与它关联的文件。

文件的打开与关闭

FILE * fopen ( const char * filename, const char * mode ); 
int fclose ( FILE * stream );

一般用上面的两个函数打开和关闭文件,我们打开文件后一定要记得关闭,不然造成文件资源泄露,类似于内存泄露。
举个例子:

FILE* fp=fopen("e:/text.txt","r");

这就是以只读的方式打开E盘的text.txt的文件。
方式我们常用红框内的方式。

fclose(fp);

这就把刚才打开的文件关闭了。

函数这是我们一般用的对文件读写的函数。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main(){
	FILE *fp = fopen("e:/test.txt","r");
	char a[20];
	if (fp == NULL){
		printf("错误\n");
	}
	else{
		fread(a,1,sizeof(a),fp);
		char *p = a;
		printf("%s\n", p);
		fclose(fp);
	}
	system("pause");
	return 0;
}

上面就是读操作;

size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );

fread:void *ptr是你要写入内存地址,第二个是无符号整型,说元素字节大小,第三个是用来表示多少个元素,最后那个就是你命名的文件指针,返回值为成功写入的数值;

fwrite类似于fread,写入的为常量。

int fputs ( const char * str, FILE * stream );
char * fgets ( char * str, int num, FILE * stream );

类似于上面,只不过不用说明大小了,自动读取限制。

还有重要的是

我们一个程序打开的文件的数量是有上限的,这个上限因电脑而异,同时,当我们运行一个c程序的时候,电脑会默认打开三个文件:

stdin标准输入 =》 键盘

stdout标准输出 =》 显示器

stdrro标准错误 =》 显示器

这三个文件,当程序运行打开,程序停止,三个文件自动关闭,当然这三个文件我们是可以提前用fclose()提前关闭的。

发布了42 篇原创文章 · 获赞 12 · 访问量 3361
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章