C语言读写配置文件
2011年03月04日
CException.h /************************************************* ***********************/ /* make0000@msn.com */ /************************************************* ***********************/ /************************************************* ***********************/ #include "stdio.h" #include "conio.h" #include "signal.h" #include "setjmp.h" #include "assert.h" #ifdef __cplusplus #include "iostream" #include "exception" extern "C"{ #define dllexport __declspec(dllexport) jmp_buf Jmp_Buf; int E; #define Exception 0x00000 #define e Exception #define try if(!(E=setjmp(Jmp_Buf))) #define last_error() E #define catch(val) else #define throw(val) longjmp(Jmp_Buf,val) #define check(expersion) assert(expersion) #define GetError() errno dllexport void sig_usr(int); dllexport char* getTime(); } #else #define dllexport __declspec(dllexport) jmp_buf Jmp_Buf; int E; #define Exception 0x00000 #define e Exception #define try if(!(E=setjmp(Jmp_Buf))) #define last_error() E #define catch(val) else #define throw(val) longjmp(Jmp_Buf,val) #define check(expersion) assert(expersion) #define GetError() errno dllexport void sig_usr(int); dllexport char* getTime(); #endif File.h #include #include #include #include #define SIZE 128 #include "CException.h" #define export __declspec(dllexport) //读取配置文件. int read_file(char* filename,char* key,char* value); //写配置文件. int write_file(char* filename,char* key,char* value); //释放文件. int release(); //写入节. int write_section(char* filename,char* section); int read_section(char* filename); int getAuthor(char* value); void getVersion(char* value); File.c #include "File.h" #include int read_file(char* filename,char* key,char* value) { int flag=0; char buffer[SIZE]; FILE *file=fopen(filename,"r"); try { if(file==NULL) { flag=1; throw(flag); } else { while(fgets(buffer,SIZE,file)!=NULL) { int i=0,j=0,len=strlen(key); while(buffer[i]!='\0') { if(buffer[i]=='$'&&buffer[i+len+1]=='=') { j=i+len+2; while(buffer[j]!='\0'&&buffer[j]!=';') { int h=0; if(buffer[i+1]==key[i]) { //printf("%c",buffer[j]); value[j-i-len-2]=buffer[j]; } j++; } break; } else if(buffer[i]=='/'&&buffer[i+1]=='/'||buffer[i]=='; ') { break; //comment } i++; } } } } catch(Exception) { flag=2; fclose(file); printf("can't open file %s",filename); exit(1); } fflush(file); fclose(file); return flag; } int write_file(char* filename,char* key,char* value) { int flag=0; FILE* file; file=fopen(filename,"a"); try { if(file==NULL) { flag=1; throw(flag); } fprintf(file,"$%s=%s\n",key,value); } catch(Exception) { printf("Can't write file %s",filename); exit(1); } fflush(file); fclose(file); return flag; } int write_section(char* filename,char* section) { int flag=0; FILE* file=NULL; try { file=fopen(filename,"a"); if(file!=NULL) { fprintf(file,"[%s]\n",section); } else { int flag=1; throw(flag); } } catch(Exception) { printf("can't open file %s",filename); exit(0); } fflush(file); fclose(file); return flag; } int release() { int flag=1; return flag; } int read_section(char* filename) { return 0; } int getAuthor(char* value) { char author[128]="武汉软件工程职业学院计算机应用系孟德军"; int i=0; for(i=0;i typedef (* write)(char* filename,char* key,char* value); typedef (* writes)(char* filename,char* value); typedef (* read)(char* filename,char* key,char* value); HINSTANCE hInstance; write write_file; writes write_section; read read_file; char buffer[128]; char buffer1[128]; void main() { hInstance=LoadLibrary("File.dll"); if(hInstance!=NULL) { write_file=(write)GetProcAddress(hInstance,"write_ file"); write_section=(writes)GetProcAddress(hInstance,"wr ite_section"); read_file=(read)GetProcAddress(hInstance,"read_fil e"); write_section("config.ini","mysql"); write_file("config.ini","username","root"); write_file("config.ini","password","admin"); write_file("config.ini","driverClassName","com.mys ql.jdbc.Driver"); write_file("config.ini","url","jdbc:mysql://localh ost:3306/user"); read_file("config.ini","username",buffer); printf("username=%s",buffer); read_file("config.ini","password",buffer1); printf("password=%s",buffer1); } else { printf("can't load dynamic file File.dll"); } FreeLibrary(hInstance); }
2011年03月04日
CException.h /************************************************* ***********************/ /* make0000@msn.com */ /************************************************* ***********************/ /************************************************* ***********************/ #include "stdio.h" #include "conio.h" #include "signal.h" #include "setjmp.h" #include "assert.h" #ifdef __cplusplus #include "iostream" #include "exception" extern "C"{ #define dllexport __declspec(dllexport) jmp_buf Jmp_Buf; int E; #define Exception 0x00000 #define e Exception #define try if(!(E=setjmp(Jmp_Buf))) #define last_error() E #define catch(val) else #define throw(val) longjmp(Jmp_Buf,val) #define check(expersion) assert(expersion) #define GetError() errno dllexport void sig_usr(int); dllexport char* getTime(); } #else #define dllexport __declspec(dllexport) jmp_buf Jmp_Buf; int E; #define Exception 0x00000 #define e Exception #define try if(!(E=setjmp(Jmp_Buf))) #define last_error() E #define catch(val) else #define throw(val) longjmp(Jmp_Buf,val) #define check(expersion) assert(expersion) #define GetError() errno dllexport void sig_usr(int); dllexport char* getTime(); #endif File.h #include #include #include #include #define SIZE 128 #include "CException.h" #define export __declspec(dllexport) //读取配置文件. int read_file(char* filename,char* key,char* value); //写配置文件. int write_file(char* filename,char* key,char* value); //释放文件. int release(); //写入节. int write_section(char* filename,char* section); int read_section(char* filename); int getAuthor(char* value); void getVersion(char* value); File.c #include "File.h" #include int read_file(char* filename,char* key,char* value) { int flag=0; char buffer[SIZE]; FILE *file=fopen(filename,"r"); try { if(file==NULL) { flag=1; throw(flag); } else { while(fgets(buffer,SIZE,file)!=NULL) { int i=0,j=0,len=strlen(key); while(buffer[i]!='\0') { if(buffer[i]=='$'&&buffer[i+len+1]=='=') { j=i+len+2; while(buffer[j]!='\0'&&buffer[j]!=';') { int h=0; if(buffer[i+1]==key[i]) { //printf("%c",buffer[j]); value[j-i-len-2]=buffer[j]; } j++; } break; } else if(buffer[i]=='/'&&buffer[i+1]=='/'||buffer[i]=='; ') { break; //comment } i++; } } } } catch(Exception) { flag=2; fclose(file); printf("can't open file %s",filename); exit(1); } fflush(file); fclose(file); return flag; } int write_file(char* filename,char* key,char* value) { int flag=0; FILE* file; file=fopen(filename,"a"); try { if(file==NULL) { flag=1; throw(flag); } fprintf(file,"$%s=%s\n",key,value); } catch(Exception) { printf("Can't write file %s",filename); exit(1); } fflush(file); fclose(file); return flag; } int write_section(char* filename,char* section) { int flag=0; FILE* file=NULL; try { file=fopen(filename,"a"); if(file!=NULL) { fprintf(file,"[%s]\n",section); } else { int flag=1; throw(flag); } } catch(Exception) { printf("can't open file %s",filename); exit(0); } fflush(file); fclose(file); return flag; } int release() { int flag=1; return flag; } int read_section(char* filename) { return 0; } int getAuthor(char* value) { char author[128]="武汉软件工程职业学院计算机应用系孟德军"; int i=0; for(i=0;i typedef (* write)(char* filename,char* key,char* value); typedef (* writes)(char* filename,char* value); typedef (* read)(char* filename,char* key,char* value); HINSTANCE hInstance; write write_file; writes write_section; read read_file; char buffer[128]; char buffer1[128]; void main() { hInstance=LoadLibrary("File.dll"); if(hInstance!=NULL) { write_file=(write)GetProcAddress(hInstance,"write_ file"); write_section=(writes)GetProcAddress(hInstance,"wr ite_section"); read_file=(read)GetProcAddress(hInstance,"read_fil e"); write_section("config.ini","mysql"); write_file("config.ini","username","root"); write_file("config.ini","password","admin"); write_file("config.ini","driverClassName","com.mys ql.jdbc.Driver"); write_file("config.ini","url","jdbc:mysql://localh ost:3306/user"); read_file("config.ini","username",buffer); printf("username=%s",buffer); read_file("config.ini","password",buffer1); printf("password=%s",buffer1); } else { printf("can't load dynamic file File.dll"); } FreeLibrary(hInstance); }