[代码] CException.h
view source
print?
01 /************************************************************************/
02 /* make0000@msn.com */
03 /************************************************************************/
04 /************************************************************************/
05 #include "stdio.h"
06 #include "conio.h"
07 #include "signal.h"
08 #include "setjmp.h"
09 #include "assert.h"
10 #ifdef __cplusplus
11 #include "iostream"
12 #include "exception"
13 extern "C"{
14 #define dllexport __declspec(dllexport)
15 jmp_buf Jmp_Buf;
16 int E;
17 #define Exception 0x00000
18 #define e Exception
19 #define try if(!(E=setjmp(Jmp_Buf)))
20 #define last_error() E
21 #define catch(val) else
22 #define throw(val) longjmp(Jmp_Buf,val)
23 #define check(expersion) assert(expersion)
24 #define GetError() errno
25 dllexport void sig_usr(int);
26 dllexport char* getTime();
27 }
28 #else
29 #define dllexport __declspec(dllexport)
30 jmp_buf Jmp_Buf;
31 int E;
32 #define Exception 0x00000
33 #define e Exception
34 #define try if(!(E=setjmp(Jmp_Buf)))
35 #define last_error() E
36 #define catch(val) else
37 #define throw(val) longjmp(Jmp_Buf,val)
38 #define check(expersion) assert(expersion)
39 #define GetError() errno
40 dllexport void sig_usr(int);
41 dllexport char* getTime();
42 #endif
[代码] File.h
01 #include <stdio.h>
02 #include <stdlib.h>
03 #include <string.h>
04 #include <windows.h>
05 #define SIZE 128
06 #include "CException.h"
07 #define export __declspec(dllexport)
08 //读取配置文件.
09 int read_file(char* filename,char* key,char* value);
10 //写配置文件.
11 int write_file(char* filename,char* key,char* value);
12 //释放文件.
13 int release();
14 //写入节.
15 int write_section(char* filename,char* section);
16 int read_section(char* filename);
17 int getAuthor(char* value);
18 void getVersion(char* value);
[代码] File.c
001 #include "File.h"
002 #include <string.h>
003
004 int read_file(char* filename,char* key,char* value)
005 {
006 int flag=0;
007 char buffer[SIZE];
008 FILE *file=fopen(filename,"r");
009 try
010 {
011 if(file==NULL)
012 {
013 flag=1;
014 throw(flag);
015 }
016 else
017 {
018 while(fgets(buffer,SIZE,file)!=NULL)
019 {
020 int i=0,j=0,len=strlen(key);
021 while(buffer[i]!='\0')
022 {
023 if(buffer[i]=='$'&&buffer[i+len+1]=='=')
024 {
025 j=i+len+2;
026 while(buffer[j]!='\0'&&buffer[j]!=';')
027 {
028 int h=0;
029 if(buffer[i+1]==key[i])
030 {
031 //printf("%c",buffer[j]);
032 value[j-i-len-2]=buffer[j];
033 }
034 j++;
035 }
036 break;
037 }
038 else if(buffer[i]=='/'&&buffer[i+1]=='/'||buffer[i]==';')
039 {
040 break;
041 //comment
042 }
043
044
045 i++;
046 }
047 }
048 }
049 }
050 catch(Exception)
051 {
052 flag=2;
053 fclose(file);
054 printf("can't open file %s",filename);
055 exit(1);
056 }
057 fflush(file);
058 fclose(file);
059 return flag;
060
061 }
062
063 int write_file(char* filename,char* key,char* value)
064 {
065 int flag=0;
066 FILE* file;
067 file=fopen(filename,"a");
068 try
069 {
070 if(file==NULL)
071 {
072 flag=1;
073 throw(flag);
074 }
075 fprintf(file,"$%s=%s\n",key,value);
076 }
077 catch(Exception)
078 {
079 printf("Can't write file %s",filename);
080 exit(1);
081 }
082 fflush(file);
083 fclose(file);
084 return flag;
085 }
086
087 int write_section(char* filename,char* section)
088 {
089 int flag=0;
090 FILE* file=NULL;
091 try
092 {
093 file=fopen(filename,"a");
094 if(file!=NULL)
095 {
096 fprintf(file,"[%s]\n",section);
097 }
098 else
099 {
100 int flag=1;
101 throw(flag);
102 }
103 }
104 catch(Exception)
105 {
106 printf("can't open file %s",filename);
107 exit(0);
108 }
109 fflush(file);
110 fclose(file);
111 return flag;
112 }
113 int release()
114 {
115 int flag=1;
116 return flag;
117 }
118 int read_section(char* filename)
119 {
120 return 0;
121 }
122 int getAuthor(char* value)
123 {
124 char author[128]="武汉软件工程职业学院计算机应用系孟德军";
125 int i=0;
126 for(i=0;i<strlen(author);i++)
127 {
128 value[i]=author[i];
129 }
130 return 0;
131 }
132 void getVersion(char* value)
133 {
134 char version[128]="2009//05//01";
135 int i=0;
136 for(i=0;i<strlen(version);i++)
137 {
138 value[i]=version[i];
139 }
140
141 }
142 /**************************************************************************
143 void main()
144 {
145 char* str=NULL;
146 char author[120];
147 char buffer[128];
148 char buffer1[128];
149 char buffer2[128];
150 read_file("F:\\exercise\\C++!C\\sys.ini","password",buffer);
151 read_file("F:\\exercise\\C++!C\\sys.ini","username",buffer1);
152 read_file("F:\\exercise\\C++!C\\sys.ini","driver",buffer2);
153 printf("password=%s\n",buffer);
154 printf("\n");
155 printf("username=%s\n",buffer1);
156 printf("\n");
157 printf("driver=%s\n",buffer2);
158 getAuthor(author);
159 printf("\n");
160 printf("author=%s",author);
161 release();
162 }
例子二:
#include <stdio.h>
#include <string.h>
#define MAX_BUF 20
#define SERVER "localhost"
#define CONFIG_FILE "1.conf"
bool SetAuthServer(char* strServerAdd)
{
char buf[MAX_BUF], tempBuf[MAX_BUF];
memset(buf, 0, MAX_BUF);
memset(tempBuf, 0, MAX_BUF);
FILE *pF = fopen(CONFIG_FILE, "r");
if(!pF)
{
printf("打开文件失败!\n");
return false;
}
fread(buf, MAX_BUF, 1, pF);
if(!feof(pF))
{
printf("读取不完整,请把MAX_BUF设置为大一点, 当前大小为: %d\n", MAX_BUF);
fclose(pF);
return false;
}
fclose(pF);
char *lpPos = buf;
char *lpNewPos = buf;
while(lpNewPos = strstr(lpPos, SERVER))
{
strncpy(tempBuf+strlen(tempBuf), lpPos, lpNewPos-lpPos);
strcat(tempBuf, strServerAdd);
lpPos = lpNewPos + strlen(SERVER);
}
strcat(tempBuf, lpPos);
pF = fopen(CONFIG_FILE, "w");
if(!pF)
{
printf("打开文件失败!\n");
return false;
}
fwrite(tempBuf, strlen(tempBuf), 1, pF);
fclose(pF);
return true;
}
void main()
{
char buf[20];
printf("请输入一个字符串来修改服务器配置: ");
scanf("%s", buf);
if(SetAuthServer(buf) == true)
printf("修改成功!\n");
else
printf("修改失败!\n");
}