1
昨天花了一些时间写了一个WINCE下的INI文件读取,功能很简单啦。。就是去注释, 找出索引和关键字 放在一个3维的字符串数组里。。
2
char mmap[1][2][3]。。研究好半天最后一个[3]是字符的个数。[1]是行,[2]是列。。
3
WINCE是支持UNICODE。。暂时只写了ANSI的。。
4![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
5
格式就是 VGA = 640X480 ;视频设置
6![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
7
VGA会保存在列[0], 640X480保存在列[1]里;
8![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
9
暂时未发现什么BUG。。
10
mmap[1][2][3]用的是全局
11
。。代码嘛如下。。。
12![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
13
#include <stdio.h>
14
#include <string.h>
15
#include <stdlib.h>
16![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
17
#define FILEPATH "DVRconfig.ini"
18![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
19
extern void CompareText(char *dst, const char *buff);
20
extern void GetValue(int *row, const char *src);
21![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
22![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
static char gMap[50][2][100] =
{'\0'}; //用于保存 索引 和 值
23![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
24
int main(int argc, char** argv)
25![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
{
26
FILE *fp;
27
int iZise, i, row;
28
29![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
30![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
char buff[1000], dst[1000] =
{'\0'};
31
32![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
33
fp = fopen(FILEPATH, "a+");
34![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
35
if(fp < 0)
36![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
37
printf("文件打开失败\n");
38
}
39
memset(buff, '\0', 1000);
40
iZise = fread(buff, sizeof(char), 1000, fp);
41
CompareText(dst, buff);
42
GetValue(&row, dst);
43![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
44![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
45![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
46
for(i = 0; i <=row; i++)
47![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
48
printf("%s=%s", gMap[i][0], gMap[i][1]);
49
}
50
51
52![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
53
return 0;
54
}
55![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
56
//---------------------------------------------
57
//用于删除INI文件中的注释和空格
58
//---------------------------------------------
59
void CompareText(char *dst, const char *buff)
60![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
{
61
char *tmp = (char *)buff;
62
char *eof = (char *)buff;
63
int i = 0, count = 0;
64![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
65
while(*tmp++)
66
count++;
67![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
68
while(i < count)
69![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
70
if(eof[i] == 0x3b) //把行注释;号以后的删掉,填充空格
71![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
72
while(1)
73![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
74
eof[i++] = 0x20;
75
if(count == i)
76![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
77
//eof[i] = 0x0a;
78
break;
79
}
80
if(eof[i] == 0x0a) break;
81
}
82
83
}
84![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
85
i++;
86
}
87![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
88
tmp = dst;
89
i = 0;
90![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
91
while(i < count)
92![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
93
if(eof[i] != 0x20) //删除空格
94
*tmp++ = eof[i];
95![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
96
i++;
97
}
98
}
99![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
100
//-------------------------------------------------
101
//获取缓冲中的键和值,分辨保存到mMap[10][10][10]中
102
// 行 列 字符串
103
//---------------------------------------------
104
void GetValue(int *row, const char *src)
105![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
{
106![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
107
int i = 0, count = 0;
108
*row = 0;
109
char *tmp = (char *)src;
110![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
111![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
112![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
113
while(*tmp++)
114
++count;
115![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
116
tmp = (char *)src;
117![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
118
int no = 0, no1 = 0;
119
while(i < count)
120![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
121
end:
122
if(tmp[i] != 0x3d)
123![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
124
gMap[*row][0][no] = tmp[i]; //保存索引
125
}
126
else if(tmp[i] == 0x3d)
127![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
128
while(1)
129![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
130
if(count == i) break;
131
if(tmp[i] == 0x0a)
132![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
133
gMap[*row][1][no1 - 1] = '\0';
134
(*row)++;
135
no = 0;
136
no1 = 0;
137
goto end;
138
}
139
140
gMap[*row][1][no1] = tmp[i + 1]; //保存值
141
i++;
142
no1++;
143
}
144![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
145
}
146![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
147
i++;
148
no++;
149
}
150![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
151
}
152![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)