1.CException.h
2./************************************************************************/
3./* make0000@msn.com */
4./************************************************************************/
5./************************************************************************/
6.#include "stdio.h"
7.#include "conio.h"
8.#include "signal.h"
9.#include "setjmp.h"
10.#include "assert.h"
11.#ifdef __cplusplus
12.#include "iostream"
13.#include "exception"
14.extern "C"{
15.#define dllexport __declspec(dllexport)
16.jmp_buf Jmp_Buf;
17.int E;
18.#define Exception 0x00000
19.#define e Exception
20.#define try if(!(E=setjmp(Jmp_Buf)))
21.#define last_error() E
22.#define catch(val) else
23.#define throw(val) longjmp(Jmp_Buf,val)
24.#define check(expersion) assert(expersion)
25.#define GetError() errno
26.dllexport void sig_usr(int);
27.dllexport char* getTime();
28.}
29.#else
30.#define dllexport __declspec(dllexport)
31.jmp_buf Jmp_Buf;
32.int E;
33.#define Exception 0x00000
34.#define e Exception
35.#define try if(!(E=setjmp(Jmp_Buf)))
36.#define last_error() E
37.#define catch(val) else
38.#define throw(val) longjmp(Jmp_Buf,val)
39.#define check(expersion) assert(expersion)
40.#define GetError() errno
41.dllexport void sig_usr(int);
42.dllexport char* getTime();
43.
44.#endif
45.
46.
47.File.h
48.#include <stdio.h>
49.#include <stdlib.h>
50.#include <string.h>
51.#include <windows.h>
52.#define SIZE 128
53.#include "CException.h"
54.#define export __declspec(dllexport)
55.//读取配置文件.
56.int read_file(char* filename,char* key,char* value);
57.//写配置文件.
58.int write_file(char* filename,char* key,char* value);
59.//释放文件.
60.int release();
61.//写入节.
62.int write_section(char* filename,char* section);
63.int read_section(char* filename);
64.int getAuthor(char* value);
65.void getVersion(char* value);
66.
67.File.c
68.#include "File.h"
69.#include <string.h>
70.
71.int read_file(char* filename,char* key,char* value)
72.{
73.int flag=0;
74.char buffer[SIZE];
75.FILE *file=fopen(filename,"r");
76.try
77. {
78. if(file==NULL)
79. {
80. flag=1;
81. throw(flag);
82. }
83. else
84. {
85. while(fgets(buffer,SIZE,file)!=NULL)
86. {
87. int i=0,j=0,len=strlen(key);
88. while(buffer[i]!='\0')
89. {
90. if(buffer[i]=='$'&&buffer[i+len+1]=='=')
91. {
92. j=i+len+2;
93. while(buffer[j]!='\0'&&buffer[j]!=';')
94. {
95. int h=0;
96. if(buffer[i+1]==key[i])
97. {
98. //printf("%c",buffer[j]);
99. value[j-i-len-2]=buffer[j];
100. }
101. j++;
102. }
103. break;
104. }
105. else if(buffer[i]=='/'&&buffer[i+1]=='/'||buffer[i]==';')
106. {
107. break;
108. //comment
109. }
110.
111.
112. i++;
113. }
114. }
115. }
116. }
117. catch(Exception)
118. {
119. flag=2;
120. fclose(file);
121. printf("can't open file %s",filename);
122. exit(1);
123. }
124.fflush(file);
125.fclose(file);
126.return flag;
127.
128.}
129.
130.int write_file(char* filename,char* key,char* value)
131.{
132.int flag=0;
133.FILE* file;
134.file=fopen(filename,"a");
135.try
136.{
137. if(file==NULL)
138. {
139. flag=1;
140. throw(flag);
141. }
142. fprintf(file,"$%s=%s\n",key,value);
143.}
144.catch(Exception)
145.{
146. printf("Can't write file %s",filename);
147. exit(1);
148.}
149.fflush(file);
150.fclose(file);
151.return flag;
152.}
153.
154.int write_section(char* filename,char* section)
155.{
156.int flag=0;
157.FILE* file=NULL;
158.try
159.{
160. file=fopen(filename,"a");
161. if(file!=NULL)
162. {
163. fprintf(file,"[%s]\n",section);
164. }
165. else
166. {
167. int flag=1;
168. throw(flag);
169. }
170.}
171.catch(Exception)
172.{
173. printf("can't open file %s",filename);
174. exit(0);
175.}
176.fflush(file);
177.fclose(file);
178.return flag;
179.}
180.int release()
181.{
182.int flag=1;
183.return flag;
184.}
185.int read_section(char* filename)
186.{
187.return 0;
188.}
189.int getAuthor(char* value)
190.{
191.char author[128]="武汉软件工程职业学院计算机应用系孟德军";
192.int i=0;
193.for(i=0;i<strlen(author);i++)
194.{
195.value[i]=author[i];
196.}
197.return 0;
198.}
199.void getVersion(char* value)
200.{
201.char version[128]="2009//05//01";
202.int i=0;
203.for(i=0;i<strlen(version);i++)
204.{
205.value[i]=version[i];
206.}
207.
208.}
209./**************************************************************************
210.void main()
211.{
212.char* str=NULL;
213.char author[120];
214.char buffer[128];
215.char buffer1[128];
216.char buffer2[128];
217.read_file("F:\\exercise\\C++!C\\sys.ini","password",buffer);
218.read_file("F:\\exercise\\C++!C\\sys.ini","username",buffer1);
219.read_file("F:\\exercise\\C++!C\\sys.ini","driver",buffer2);
220.printf("password=%s\n",buffer);
221.printf("\n");
222.printf("username=%s\n",buffer1);
223.printf("\n");
224.printf("driver=%s\n",buffer2);
225.getAuthor(author);
226.printf("\n");
227.printf("author=%s",author);
228.release();
229.}
230.****************************************************************************/
231.
232.sys.ini
233.
234.[mysql]
235.$username=root
236.$password=123456
237.$driver=com.mysql.jdbc.Driver
238.$url=jdbc:mysql://localhost:3306/mysql
239.
240.动态链接库测试:
241.
242.#include <windows.h>
243.typedef (* write)(char* filename,char* key,char* value);
244.typedef (* writes)(char* filename,char* value);
245.typedef (* read)(char* filename,char* key,char* value);
246.HINSTANCE hInstance;
247.write write_file;
248.writes write_section;
249.read read_file;
250.char buffer[128];
251.char buffer1[128];
252.void main()
253.{
254.hInstance=LoadLibrary("File.dll");
255.if(hInstance!=NULL)
256.{
257.
258.write_file=(write)GetProcAddress(hInstance,"write_file");
259.write_section=(writes)GetProcAddress(hInstance,"write_section");
260.read_file=(read)GetProcAddress(hInstance,"read_file");
261.
262.write_section("config.ini","mysql");
263.write_file("config.ini","username","root");
264.write_file("config.ini","password","admin");
265.write_file("config.ini","driverClassName","com.mysql.jdbc.Driver");
266.write_file("config.ini","url","jdbc:mysql://localhost:3306/user");
267.
268.read_file("config.ini","username",buffer);
269.printf("username=%s",buffer);
270.
271.read_file("config.ini","password",buffer1);
272.printf("password=%s",buffer1);
273.}
274.else
275.{
276.printf("can't load dynamic file File.dll");
277.}
278.FreeLibrary(hInstance);
279.}
转载于:https://my.oschina.net/mengdejun/blog/9430