c语言读写配置文件

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值