C_文件操作(图书信息存储)

图书信息存储

  • 介绍
  • 源码
    • 项目一:文件写入操作
    • 项目二:文件读取操作
  • 运行结果
    • 文件写入
    • 文件读取

介绍

本文主要使用了文件操作的:“打开关闭操作、读取写入操作、文本指针偏移操作”
打开关闭操作函数: fopen(“文件名+后缀”,“打开格式”) 函数 、fclose(文件指针)函数
读取写入操作函数:fprintf(文件指针,"文件格式’',变量) 函数 、fputs(“内容”,文件指针) 函数 、fputc(“内容”,文件指针) 函数
文本指针偏移操作函数:fseek(文件指针, 偏移量, best);//SEEK_SET从开头开始偏移//SEEK_CUR从当前位置开始偏移//SEEK_END从结尾开始偏移
PS:详细介绍看代码注释
C_文件操作(图书信息存储)_第1张图片

源码

项目一:文件写入操作

#include
#include
struct Books
{
	int ID;
	char Title[20];
	char Name[20];
	double Price;
};
//写入方法一:文本内容title
void Write_1()
{
	FILE *pf = NULL;//赋值空
	pf = fopen("..\\图书信息.txt", "wt");//返回文件上一层后新建一个文本文件
	if (pf == NULL)
		printf("写入失败,没有此文件");
	else
	{
		fputs("图书ID\t书名\t作者名\t价格\n", pf);
	}
	fclose(pf);
}
//写入方法二:写入文本内容
void Write_2()
{
	Books Book;//定义一个结构体变量
	FILE *fp = NULL;//赋值空
	fp = fopen("..\\图书信息.txt", "a+");//返回文件上一层追加或者新建一个文本文件
	if (fp == NULL)
	{
		printf("写入失败,没有此文件");
	}
	else
	{
		printf("请输入:图书ID 书名 作者名 价格\n");
		//输入信息:
		scanf("%d\t%s\t%s\t%d\n", &Book.ID, &Book.Title, &Book.Name, &Book.Price);
		//写入文件信息到文本
		fprintf(fp, "%d\t%s\t%s\t%d\n", Book.ID, Book.Title, Book.Name, Book.Price);
		printf("写入成功\n");
	}
	fclose(fp);
}
//写入方法三:写入单字符
void Write_Single_character()
{
	FILE *pf;//赋值空
	pf = fopen("..\\1.txt", "wt");//返回文件上一层新建一个文本文件
	if (pf == NULL)
		printf("写入失败,没有此文件");
	else
	{
		fputc(66, pf);
		printf("写入成功\n");
	}
	fclose(pf);
}
void main()
{
	//写入方法一:文本内容title
	Write_1();
	//写入方法二:写入文本内容
	Write_2();
	//写入单字符:
	Write_Single_character();
	system("pause");
}

项目二:文件读取操作

#include
#include
#include
//设置一个全局数组存title
char buff[255];

struct Books
{
	int ID;
	char Title[20];
	char Name[20];
	double Price;
};
//读取方法一:读取文本内容title
void read_1()
{
	FILE *pf = NULL;//赋值空
	
	pf = fopen("..\\图书信息.txt", "rt");//读取文本文件
	if (pf == NULL)
		printf("读取失败,没有此文件");
	else
	{	
		//当buff数组碰到"\n"停止打印,存储
		if (buff != "\n")
		{
			//获取内容
			fgets(buff, 255, pf);
			//打印内容
			printf("%s", buff);
		}
	}
	fclose(pf);//关闭文件
}
//读取方法二:读取文本内容
void read_2()
{
	
	Books Book;//定义一个结构体变量
	FILE *fp = NULL;//赋值空

	int size = strlen(buff);//获取到数组内容大小
	
	fp = fopen("..\\图书信息.txt", "rt");//读取文本文件
	
	if (fp == NULL)
	{
		printf("读取失败,没有此文件");
	}
	else
	{
		//指针从内容开头偏移 strlen(buff) 的 size;
		fseek(fp, size, SEEK_SET);
		//读取内容存储到结构体中
		fscanf(fp, "%d%s%s%d", &Book.ID, &Book.Title, &Book.Name, &Book.Price);
		//打印内容
		printf("%d\t%s\t%s\t%d\n", Book.ID, Book.Title, Book.Name, Book.Price);
	}
	fclose(fp);//关闭文件
}
//读取方法三:读取单字符
void read_Single_character()
{
	FILE *pf;//赋值空

	pf = fopen("..\\1.txt", "a+");//追加或者新建一个文本文件
	if (pf == NULL)
		printf("写入失败,没有此文件");
	else
	{
		//读取单字符
		char c = fgetc(pf);
		printf("%c\n",c );
	}
	fclose(pf);
}
void main()
{
	//读取方法一:读取文本内容title
	read_1();
	//读取方法二:读取文本内容
	read_2();
	//读取方法三:读取单字符
	read_Single_character();
	system("pause");
}

运行结果

文件写入

C_文件操作(图书信息存储)_第2张图片
C_文件操作(图书信息存储)_第3张图片

文件读取

C_文件操作(图书信息存储)_第4张图片

你可能感兴趣的:(C_学习参考,c语言)