c语言文件读写综合案例:读取lol信息(代码片段)

流楚丶格念 流楚丶格念     2023-01-28     427

关键词:

文件读写综合案例

读写配置文件

配置文件格式如下:

  • 正式的数据以‘:’冒号进行分割:
    • 冒号前为key起到索引作用
    • 冒号后为value是实值。
  • #开头的为注释,而不是正式数据

config.txt

配置文件里填入英雄基本信息:

#英雄的Id
heroId:1
#英雄的姓名
heroName:德玛西亚
#英雄的攻击力
heroAtk:1000
#英雄的防御力
heroDef:500
#英雄的简介
heroInfo:前排坦克

出现问题:解决中文乱码

直接用fgets的话,读取txt文本一般会出现乱码问题,请参考另一篇博文进行解决:
https://yangyongli.blog.csdn.net/article/details/121024950

代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

struct ConfigInfo

	char key[64];
	char value[64];
;

//获取指定的配置信息
char * getInfoByKey(char * key, struct ConfigInfo*configInfo, int lines)

	for (int i = 0; i < lines; i++)
	
		if (strcmp(key, configInfo[i].key) == 0)
		
			// printf("测试:%s\\n", configInfo[i].value);
			return configInfo[i].value;
		
	
	return NULL;


//释放配置文件信息
void freeConfigInfo(struct ConfigInfo*configInfo)

	free(configInfo);
	configInfo = NULL;


//判断当前行是否为有效行
int isValidLine(char * buf)

	if (buf[0] == '0' || buf[0] == '\\0' || strchr(buf, ':') == NULL)
	
		return 0;// 如果行无限 返回假
	
	return 1;

//获取文件有效行数
int getFileLine(const char  * filePath)

	FILE * file = fopen(filePath, "r");
	char buf[1024] =  0 ;
	int lines = 0;
	while (fgets(buf, 1024, file) != NULL)
	
		if (isValidLine(buf))
		
			lines++;
		
		memset(buf, 0, 1024);
	

	fclose(file);

	return lines;


//解析文件
void parseFile(const char  * filePath, int lines, struct ConfigInfo** configInfo)


	struct ConfigInfo * pConfig = malloc(sizeof(struct ConfigInfo) * lines);

	if (pConfig == NULL)
	
		return;
	

	FILE * file = fopen(filePath, "r");
	char buf[1024] =  0 ;

	int index = 0;
	while (fgets(buf, 1024, file) != NULL)
	
		if (isValidLine(buf))
		
			//解析数据到struct ConfigInfo中
			memset(pConfig[index].key, 0, 64);
			memset(pConfig[index].value, 0, 64);
			char * pos = strchr(buf, ':');
			strncpy(pConfig[index].key, buf, pos - buf);
			strncpy(pConfig[index].value, pos + 1, strlen(pos + 1) - 1); // 从第二个单词开始截取字符串,并且不截取换行符
			// printf("key = %s\\n", pConfig[index].key);
			// printf("value = %s\\n", pConfig[index].value);
			index++;
		
		memset(buf, 0, 1024);
	

	*configInfo = pConfig;



int main() 

	char * filePath = "./config.txt";
	int lines = getFileLine(filePath);
	printf("文件有效行数为:%d\\n", lines);

	struct ConfigInfo * config = NULL;
	parseFile(filePath, lines, &config);

	printf("heroId = %s\\n", getInfoByKey("heroId", config, lines));
	printf("heroName: = %s\\n", getInfoByKey("heroName", config, lines));
	printf("heroAtk = %s\\n", getInfoByKey("heroAtk", config, lines));
	printf("heroDef: = %s\\n", getInfoByKey("heroDef", config, lines));
	printf("heroInfo: = %s\\n", getInfoByKey("heroInfo", config, lines));


	freeConfigInfo(config);
	config = NULL;

	system("pause");
	return EXIT_SUCCESS;



运行结果:

c语言文件操作相关函数(代码片段)

文章目录头文件:stdio.h文件打开关闭函数文件打开(fopen)参数mode可选值案例文件关闭(fclose)文件读写相关函数总览字符读写函数字符读写案例行读写函数行读写案例块读写函数块读写案例格式化读写函数格式化读写案例随机读写函... 查看详情

c语言文件操作相关函数(代码片段)

文章目录头文件:stdio.h文件打开关闭函数文件打开(fopen)参数mode可选值案例文件关闭(fclose)文件读写相关函数总览字符读写函数字符读写案例行读写函数行读写案例块读写函数块读写案例格式化读写函数格式化读写案例随机读写函... 查看详情

c基础文件操作(代码片段)

目录一、文件的打开和关闭1.1fopen函数1.2fclose函数二、读取和写入字符2.1getc函数2.2putc函数2.3案例-实现控制台输入文件名创建文件并支持写入功能2.4案例-实现控制台输入文件名读取该文件的内容2.5案例-实现echo的功能2.6案例-实现... 查看详情

c基础文件操作(代码片段)

目录一、文件的打开和关闭1.1fopen函数1.2fclose函数二、读取和写入字符2.1getc/fgetc函数2.2putc/fputc函数2.3案例-实现控制台输入文件名创建文件并支持写入功能2.4案例-实现控制台输入文件名读取该文件的内容2.5案例-实现echo的功能2.6... 查看详情

c基础文件操作(代码片段)

目录一、文件的打开和关闭1.1fopen函数1.2fclose函数二、读取和写入字符2.1getc/fgetc函数2.2putc/fputc函数2.3案例-实现控制台输入文件名创建文件并支持写入功能2.4案例-实现控制台输入文件名读取该文件的内容2.5案例-实现echo的功能2.6... 查看详情

c语言文件操作(配置文件读写|框架搭建|写出或更新配置文件|读取配置文件)(代码片段)

文章目录一、写出或更新配置文件二、读取配置文件一、写出或更新配置文件写出或更新配置文件:首先,使用字符数组存储键值对信息;//写出或更新的配置项//数组声明会后,注意先进行初始化为0操作,否则其中的数据可能是随机... 查看详情

c语言文件的读写(代码片段)

引入OS操作系统打开文件fopen()函数读写模式:r:读取已有文件w:文件不存在,创建文件并写入文件.文件存在,内容清零,再写入文件a:文件不存在,创建文件并写入文件.文件存在,以追加的形式写入文件r+:读写已有文件w+:文件不存... 查看详情

webapisbom-操作浏览器之综合案例(代码片段)

前期整理的WebAPIst内容21篇附在文章末尾案例:本地存储学习信息案例需求:改为本次存储版本的学习信息表需求:改为本次存储版本的学习信息表分析:需求①:读取本地存储数据(封装函数)如果本地存... 查看详情

django—综合案例(代码片段)

...查看,跳转英雄信息界面1.定义模型类打开booktest/models.py文件,定义模型类如下fromdjango.dbimportmodels#Createyourmodelshere.#定义书籍模型类classBookInfo(models.Model):btitle=models.CharFi 查看详情

c语言读写文件(代码片段)

#include<stdio.h>#include<string.h>#include<stdlib.h>//函数声明voidreadfile_Function();voidSavefile_Function();//读文件函数voidreadfile_Function() FILE *fp; char name[20], address[20], phone[20]; int age=0; if((fp=fopen("1.txt","r"))==N... 查看详情

c语言文件操作(配置文件读写|读取配置文件|函数接口形参|读取配置文件的逐行遍历操作|读取一行文本|查找字符|删除字符串前后空格)(代码片段)

文章目录一、函数接口形参二、读取配置文件的逐行遍历操作1、读取配置文件的逐行遍历操作2、读取一行数据3、查找字符4、删除字符串前后的空格5、完整代码示例一、函数接口形参函数作用:从char*filename文件中,查找char*key关... 查看详情

javase案例04——io流综合运用案例案例(代码片段)

...以下的打乱顺序的出师表重新进行排序,并输出到另一个文件!一、先帝创业未半而中道崩殂,五、然侍卫之臣不懈于内,六、忠志之士忘身于外者,二、今天下三分,九、诚宜开张圣听三、益州疲弊,八、欲报之于陛下也,七、盖追先... 查看详情

c++文件读写操作逐字符读取文本和逐行读取文本(代码片段)

相关文章C++文件读写操作(一)将字母表写入TXT文本文件 C++文件读写操作(二)逐字符读取文本和逐行读取文本 C++文件读写操作(三)如何统计文本的行数及如何读取文件某一行内容 ... 查看详情

c语言文件操作(按照文本行的方式读写文件|fgets函数|fputs函数)(代码片段)

文章目录一、fgets函数二、fputs函数三、按照文本行的方式写文件四、按照文本行的方式读文件一、fgets函数fgets函数:从FILE*stream指针指向的文件中,读取一行文本数据,将其存储在char*str指针指向的内存空间,最多读取n−1n-1n−1个字... 查看详情

python文件自动化处理--读写文件(代码片段)

文章目录一、os.makedirs()1.1文件读过程1.2文件写过程案例-生成随机的测验试卷⭐⭐案例讲解二、os.walk()案例-快速定位文件位置三、zipfile模块解压缩文件3.1读取ZIP文件3.2解压缩ZIP文件3.3压缩ZIP文件一、os.makedirs()os.makedirs()程序可以... 查看详情

超详细讲解c语言文件操作!!(代码片段)

超详细讲解C语言文件操作!!什么是文件文件名文件的打开和关闭文件指针文件的打开和关闭文件的顺序读写文件的随机读写fseekftellrewind文本文件和二进制文件文件读取结束的判定文件缓冲区什么是文件磁盘上的文件是... 查看详情

c语言文件操作(代码片段)

文件操作前言一、文件是什么?二、文件的打开和关闭1.文件指针2.打开和关闭3.文件的顺序读写三、文件的随机读写四、文本文件和二进制文件五、文件读取结束的判定六、文件缓冲区前言文件涉及到了数据持久化的问题... 查看详情

c语言fopenfwritefclose函数(打开文件进行读写覆盖或追加)(代码片段)

文章目录fopen函数描述声明参数返回值实例fwrite函数描述声明参数返回值实例fclose函数描述声明参数返回值实例fopen函数描述C库函数FILE*fopen(constchar*filename,constchar*mode)使用给定的模式mode打开filename所指向的文件。声明下面是fopen()... 查看详情