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

本文详细介绍了C语言中文件操作的三个示例,包括文件写入(方法一至三,涉及文本内容、结构体和单字符)和文件读取(方法一至三),展示了如何使用fopen、fclose、fprintf等函数实现文件操作功能。
摘要由CSDN通过智能技术生成

介绍

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

源码

项目一:文件写入操作

#include<stdio.h>
#include<stdlib.h>
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<stdio.h>
#include<stdlib.h>
#include<string.h>
//设置一个全局数组存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");
}

运行结果

文件写入

在这里插入图片描述
在这里插入图片描述

文件读取

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值