浅蓝色的琴弦
微风祈愿

  1昨天花了一些时间写了一个WINCE下的INI文件读取,功能很简单啦。。就是去注释, 找出索引和关键字 放在一个3维的字符串数组里。。
  2char mmap[1][2][3]。。研究好半天最后一个[3]是字符的个数。[1]是行,[2]是列。。
  3WINCE是支持UNICODE。。暂时只写了ANSI的。。
  4
  5格式就是 VGA = 640X480  ;视频设置
  6
  7VGA会保存在列[0], 640X480保存在列[1]里;
  8
  9暂时未发现什么BUG。。
 10mmap[1][2][3]用的是全局
 11。。代码嘛如下。。。 
 12
 13#include <stdio.h>
 14#include <string.h>
 15#include <stdlib.h>
 16
 17#define FILEPATH "DVRconfig.ini"
 18
 19extern void CompareText(char *dst, const char *buff);
 20extern void GetValue(int *row, const char *src);
 21
 22static char gMap[50][2][100= {'\0'};   //用于保存 索引 和 值
 23
 24int main(int argc, char** argv)
 25{
 26 FILE *fp;
 27 int iZise, i, row;
 28 
 29
 30 char buff[1000], dst[1000= {'\0'};
 31 
 32
 33 fp = fopen(FILEPATH, "a+");
 34
 35 if(fp < 0)
 36 {
 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
 44
 45
 46 for(i = 0; i <=row; i++)
 47 {
 48  printf("%s=%s", gMap[i][0], gMap[i][1]);
 49 }

 50  
 51 
 52
 53 return 0;
 54}

 55
 56//---------------------------------------------
 57//用于删除INI文件中的注释和空格
 58//---------------------------------------------
 59void CompareText(char *dst, const char *buff)
 60{
 61 char *tmp = (char *)buff;
 62 char *eof = (char *)buff;
 63 int i = 0, count = 0;
 64
 65 while(*tmp++)
 66  count++;
 67
 68 while(i < count)                             
 69 {
 70  if(eof[i] == 0x3b//把行注释;号以后的删掉,填充空格
 71  {
 72   while(1)
 73   {
 74    eof[i++= 0x20;
 75    if(count  == i) 
 76    {
 77     //eof[i] = 0x0a;
 78     break;
 79    }

 80    if(eof[i] == 0x0abreak;    
 81   }

 82   
 83  }

 84
 85  i++;
 86 }

 87
 88 tmp = dst;
 89 i = 0;
 90
 91 while(i < count)
 92 {
 93  if(eof[i] != 0x20)      //删除空格
 94   *tmp++ = eof[i];
 95
 96  i++;
 97 }

 98}

 99
100//-------------------------------------------------
101//获取缓冲中的键和值,分辨保存到mMap[10][10][10]中
102//                                    行  列 字符串
103//---------------------------------------------
104void GetValue(int *row, const char *src)
105
106
107 int i = 0, count = 0;
108 *row = 0;
109 char *tmp = (char *)src;
110
111
112
113 while(*tmp++)
114  ++count;
115
116 tmp = (char *)src;
117
118 int no = 0, no1 = 0;
119 while(i < count)
120 {
121end:
122  if(tmp[i] != 0x3d)         
123  {
124   gMap[*row][0][no] = tmp[i];   //保存索引
125  }

126  else if(tmp[i] == 0x3d)
127  {
128   while(1)
129   {
130    if(count == i) break;
131    if(tmp[i] == 0x0a)
132    {
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
145  }

146
147  i++;
148  no++;  
149 }

150
151}

152
posted on 2010-08-20 12:48 Platox 阅读(808) 评论(0)  编辑 收藏 引用 所属分类: Wince

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理