配置文件
先来看一下配置文件的格式
首先读取 ,以[]为单位分割,一个[key]对应其下面的key=value ,直到遇到下一个主[key]。
数据结构如下:
在插入的时候可以插入主[key] 也可以一组一组插入,但会执行查重!!
这里分享一个字符串切割函数 是我自己写的
作用:传入一端字符串 传入需要的字符串所对应的索引 就会返回对应索引的字符串!
例如:
目标字符串为:123-456-1-5-7-3453-24-4576456
输入:5
返回:7
//字符串切割函数
void CutStringsByIndex(int index, char* dest, const char* src)
{
//根据索引切割字符串函数
//配合去除空格的函数一起使用
//dest 切割后传回去的字符串 src 目标字符串
//k+1=符号的数量
//获取符号的下标位置 和符号数量
int len = strlen(src);
int t[100] = {
0 };
int k = 0;
for (int i = 0; i < len; i++)
{
if (src[i] == '=')
{
t[k] = i;
k++;
}
}
//有k+1个符号
//从第二次开始 开始拷贝的位置为符号的下一位 长度为符号的下下一位-开始拷贝的位置
if (index - 1 > k || index < 0)
{
printf("ERROR!超出索引");
return;
}
//计算开始位置
int start[100] = {
0 };
for (int i = 1; i <= k; i++)
{
start[i] = t[i - 1] + 1;
//printf("%d-", start[i]);
}
//计算截取长度
int Length[100] = {
0 };
for (int i = 1; i < k; i++)
{
Length[i] = start[i + 1] - start[i] - 1;
//printf("%d=", Length[i]);
}
//123-456-789-25-33-666
//0123456789012345678901
//k=6 开始 长度
//index 1 0 3 0
//index 2 4 3 * 1 1 t[0] 3 start[1] 4 length[1] 3
//index 3 8 3 * 2 2 t[1] 7 start[2] 8 length[2] 3
//index 4 12 2 * 3 3 t[2] 11 start[3] 12 length[3] 2
//index 5 15 2 * 4 4 t[3] 14 start[4] 15 length[4] 2
//index 6 18 3 21 5 5 t[4] 17 start[5] 18
if (index == 1)
strncpy(dest, &src[0], t[0]);
else if (index == k + 1)
strncpy(dest, &src[start[index - 1]], len - start[index - 1]);
else //2 3 4 5
strncpy(dest, &src[start[index - 1]], Length[index - 1]);
}
去除空格、换行
//去除换行 abc\n =>abc
//去除空格 " abc " =>abc
void RemoveNull(char str[])
{
//从后往前去换行
int buff[1024] = {
0 };
int len = strlen(str);
for (int i = len - 1; i > 0; i--)
{
if (str[i]=='\n')
{
strncpy(buff, &str[0], i);
strcpy(str, buff);
break;
}
}
//从后往前去空格
char buffn[1024] = {
0 };
len = strlen(str);
for (int i = len-1; i > 0; i--)
{
if (str[i]==' ')
{
strncpy(buffn, &str[0], i);
strcpy(str, buffn);
break;
}
}
len = strlen(str);
//从前往后去空格
char buffer[1024] = {
0 };
for (int j = 0; j < len; j++)
{
if (str[j] == ' ')
{
//如果第1位不是空格从最前面开始复制 把字符串复制给buffer
strncpy(buffer, &str[j+1],len-j-1);
//再把buffer复制给str
strcpy(str, buffer);
break;
}
}
}
下面附上配置文件的代码:
有兴趣可以看一下
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>