网上找的c语言读取配置文件

 

[代码] 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");
 
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值