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