栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C语言】文件操作

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C语言】文件操作

目录

一、文件的打开和关闭

二、文件的顺序读写

-----------------------------------------------

一、文件的打开和关闭 1.文件指针

每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名 字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统 声明的,取名为FILE.

例如:  FILE* pf;

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

2.fopen和fclose 2.1 fopen

文件在读写之前应该先打开文件,在使用结束之后应该关闭文件。

fopen是打开文件的函数,fclose是关闭文件的函数

 在打开文件的同时,都会返回一个FILE*的指针变量指向该文件

文件的打开方式有很多,例如:

 2.2 fclose

 文件在操作完之后,必须要关闭文件

FILE* stream 为要关闭的文件的文件指针

代码示例:

#include
#include
#include
int main()
{
	FILE* pf = fopen("test.txt", "r");//"r"是以只读的方式打开文件
	if (pf == NULL)//判断文件打开是否成功
	{
		printf("%sn", strerror(errno));
		return 1;
	}
	fclose(pf);
	pf = NULL;
	return 0;
二、文件的顺序读写

 接下来将一一介绍这些函数

1.字符输出函数(fputc)和字符输入函数(fgets) 1.1字符输出函数 fputc

 使用示例:

int main()
{
	FILE* pf = fopen("test.txt", "w");//"w"是以写的方式打开文件
	if (pf == NULL)
	{
		printf("%s", strerror(errno));
		return 1;
	}
	//写入'a'
	fputc('a', pf);
	//关闭文件
	fclose(pf);
	pf = NULL;
	return 0;
}

1.2 字符输入函数 fgetc

 

 如果读取失败则返回EOF

 使用示例:(文件中已放入了 ‘a’ )

---------------------------------------------------------------------------------------------------------

 2.文本行输入(fgets)、输出(fputs)函数 2.1 文本行输出函数 fputs

 使用示例:

int main()
{
	FILE* pf = fopen("test.txt", "w");//"w"是以写的方式打开文件
	if (pf == NULL)
	{
		printf("%s", strerror(errno));
		return 1;
	}
	//写入
	fputs("abcdef", pf);
	//关闭文件
	fclose(pf);
	pf = NULL;
	return 0;
}

运行结果如下:

2.2 文本行输入函数 fgets

从文件中读取一行数据

 从文件中读取num个字符,将其地址放在str中并返回

如果读取失败则返回NULL

注意:num = 实际读取的字符个数  +   '  '

使用示例:

首先文件中已经放入了 abcdef

int main()
{
	FILE* pf = fopen("test.txt", "r");//以读的方式打开文件
	if (pf == NULL)
	{
		printf("%sn", strerror(errno));
		return 1;
	}
	//读取一行数据
	char arr[10] = { 0 };
	fgets(arr, 5, pf);//从文件中读取5个字符放入arr中
	printf("%sn", arr);
	//关闭文件
	fclose(pf);
	pf = NULL;
	return 0;
}

结果为

--------------------------------------------------------

 3.格式化输入(fscanf)与格式化输出(fprintf)函数 3.1 格式化输出函数  fprintf

 使用示例:

int main()
{
	char name[10] = "zhangsan";
	int age = 18;
	float high = 1.75f;
	FILE* pf = fopen("test.txt", "w");//以写的方式打开文件
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	//格式化写入信息

	fprintf(pf, "%s %d %.2f", name, age, high);

	//关闭文件
	fclose(pf);
	pf = NULL;

	return 0;
}

结果为:

 3.2 格式化输入函数 fscanf

 使用示例:

int main()
{
	char name[10] = { 0 };
	int age;
	float high;
	FILE* pf = fopen("test.txt", "r");//以读的方式打开文件
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	//格式化读取信息

	fscanf(pf, "%s %d %f", name, &age, &high);
	printf("%s %d %.2f", name, age, high);

	//关闭文件
	fclose(pf);
	pf = NULL;

	return 0;
}

 4.二进制输入(fread)与输出(fwrite) 4.1 二进制输出  fwrite

 使用示例:

int main()
{
	int age=67;
	FILE* pf = fopen("test.txt", "wb");//以二进制写入打开文件
	if (pf == NULL)
	{
		perror(fopen);
		return 1;
	}
	//二进制写入
	fwrite(&age, sizeof(age), 1, pf);

	//关闭文件
	fclose(pf);
	pf = NULL;

	return 0;
}

结果为:

 以二进制写入,所以看不懂

4.2 二进制输入 fread

返回值为成功读取到数据的个数,如果返回值与 count 不同,则表示读取错误或读取到达文件末尾

 使用示例:

int main()
{
	int age = 0;
	FILE* pf = fopen("test.txt", "rb");//以二进制读打开文件
	if (pf == NULL)
	{
		perror(fopen);
		return 1;
	}
	//以二进制读文件
	fread(&age, sizeof(age), 1, pf);
	printf("%dn", age);
	
	fclose(pf);
	pf = NULL;
	return 0;
}

结果为:(文件之前以二进制形式写入了 67 )

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1018648.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号