C语言总结(1)———文件的相关 *** 作

C语言总结(1)———文件的相关 *** 作,第1张

C语言总结(1)———文件的相关 *** 作 文件 什么是文件?
  • 文件是数据源的一种,他最主要的作用就是保存数据。作为计算机不可或缺的一部分,文件可以储存很多不同种类的信息。
  • 文件(file)通常是在磁盘或固态硬盘上的一段已命名的存储区。例如在c语言中常出现的stdio.h就是一个文件的名称,该文件中包含的就是头文件内的相关信息。
文件的分类
  • 在C语言中,程序提供了两种文件模式:文本模式和二进制模式。
  • 二进制模式:在二进制文件格式中,文件内的所有内容都以二进制形式(0或1)存储。所以它存储的类型是多样的。对于不同类型的二进制文件,如果想要准确的得到它所存储的信息,那就必须需要特别的解码器。
  • 文本模式:文本文件只能存储char型字符变量。它通过文本编辑器就能对其中的数据进行修改。文本文件实质上也是一种特殊的二进制文件,因为它在磁盘上的存储方式也是二进制形式。
  • 当你用记事本打开文本文件时,一切都是正常的。但如果你用它打开二级制文件,可能会出现一堆乱码。那是因为文本文件只能够识别字符类型,而无法识别其他类型。
  • 那么这两种类型的文件有什么优缺点呢?文本文件存储的都是字符类型,所以每个字符所占的位置都是相同的,因而在对这段字符进行译码 *** 作时,就会相对来说比较方便。而二进制文件的存储利用率更加高。例如一个高位数字,你用文本文件来存放,就会需要相应长度的空间。而二进制文件只需要一个int或long类型的空间就行了,所占的内存就会相对来说更小点。
文件的相关知识以及作用
  • 文件的组成一般有三个部分,文件路径,文件名和后缀。后缀类型就是我们常见的各类文件最后的字母( txt exe jpg … )
文件的 *** 作
  • 先来看看文件 *** 作的简易流程:
  • 每个文件在进行读写 *** 作的时候,都少不了类似的步骤。
文件的打开
  • 如果我们要对文件进行 *** 作,那我们必须建立起和文件之间的连接。先向大家介绍文件的打开函数。那么在C语言中,存储在中的fopen( )函数就可以打开文件。
  • 那么我们来具体看fopen这个函数:FILE * fopen(char * filenname,char * mode);
  • filename是这个文件的名称(包括文件路径),而mode则问打开方式。
  • 然后我们返回一个FILE类型的指针。FILE类型是一个结构体,它是用来保存文件信息的。
  • 那么我们正常写的格式就是FILE * fp = fopen(" C:g.txt " , " rb+ "); 这句话的意思就是我们先定义了一个FILE类型叫做fp的指针,我们用它指向了一个放在C盘下3g.txt文件,该文件以二进制方式打开,并且我们可以对它进行读和写的 *** 作。
  • filename= C:g.txt
  • mode=rb+
  • 再让我们看看fopen()函数的打开方式
模式字符串说明"r"(read) 以读模式打开文件。只允许读取,不允许写入。文件不存在则打开失败"w"(write)以写模式打开文件,如果没有文件则新建一个,如果有文件,则会把文件清空。"a"(add)追加模式。文件不存在则新建一个,如果文件存在,就在文件末尾开始添加内容。"r+"以更新模式打开文件。既可以读取也可以写入,也就是随意更新文件。文件必须存在,否则打开失败。"w+"以更新模式打开文件,如果文件存在,就清空文件。不存在就新建。"a+"以更新模式打开文件,如果文件存在,就在文件末尾开始添加内容。不存在就新建。 控制读写方式的字符串说明"t"(text)文本文件,如果不写的话,默认为文本文件"b"(binary) 二进制文件 文件的关闭
  • 文件一旦使用完毕,我们就应该对文件进行关闭,以释放掉相关资源。这可以保证空间不会被乱利用,而导致文件发生丢失。
  • int fclose ( FILE * fp);
  • 当文件正常关闭时,它的值为0.如果不是0,就代表在返回时发生了错误。

了解完这两部分,让我们来简单动手 *** 作下文件的相关 *** 作,以此加深我们的印象。
方式如下: 

  • 我们现在C盘下创建一个txt文件,在里面输入以下信息。
  • 然后我们在VS中写下我们的代码
#include
#include

int main(void) {
	FILE* fp=fopen("C:\班级成员.txt","rt");
	if (fp == NULL) {
		puts("文件打开失败");
	}
	char str[25];
	while (fgets(str,24,fp)!=NULL) {
		printf("%s", str);
	}

	fclose(fp);
	return 0;
}
  • 初次我们得到的答案是
  • 很奇怪是吧,那是因为文件的本身编码的影响
  • 当我们把班级成员这个文件改为ANSI编码格式,我们就能得到正确形式了。
磊写在结尾
  • 在文件的读取中,我们还会用到更多的函数,单个字符的getc()和puts()。以及文件的I/O函数,再到随机访问的fseek()和ftell()。灵活运用这些函数,以及对文件进行读写 *** 作,我们将会实现很多事。灵活运用将链表写入文件,并从文件中读取链表是实现学生管理系统的关键,我会在接下来的博客中更新学生管理系统制作的整个流程。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5658045.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存