C语言读写配置文件--转载

http://www.oschina.net/code/snippet_4873_2503

[1].[代码] CException.h 跳至 [1] [2] [3]
/************************************************************************/
/*             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 
34
    #define try if(!(E=setjmp(Jmp_Buf))) 
35
    #define last_error() E 
36
    #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
[2].[代码] File.h 跳至 [1] [2] [3]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#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);
[3].[代码] File.c 跳至 [1] [2] [3]

#include "File.h"

#include <string.h>

 

int read_file(char* filename,char* key,char* value)

{

 int flag=;

 char buffer[SIZE];

 FILE *file=fopen(filename,"r");

 try

  {

   if(file==NULL)

   {

    flag=;

    throw(flag);

   }

   else

   {

    while(fgets(buffer,SIZE,file)!=NULL)

    {

     int i=,j=,len=strlen(key);

     while(buffer[i]!='\')

     {

       if(buffer[i]=='$'&&buffer[i+len+]=='=')

       {

        j=i+len+;

         while(buffer[j]!='\'&&buffer[j]!=';')

         {

          int h=;

          if(buffer[i+]==key[i])

          {

           //printf("%c",buffer[j]);

           value[j-i-len-]=buffer[j];

          }

          j++;

         }

        break;

       }

       else if(buffer[i]=='/'&&buffer[i+]=='/'||buffer[i]==';')

       {

        break;

        //comment

       }

          

         

     i++;

     }

    }

   }

  }

  catch(Exception)

  {

   flag=;

   fclose(file);

   printf("can't open file %s",filename);

   exit();

  }

 fflush(file);

 fclose(file); 

 return flag;

   

}

 

int write_file(char* filename,char* key,char* value)

{

 int flag=;

 FILE* file;

 file=fopen(filename,"a");

 try

 {

  if(file==NULL)

  {

  flag=;

  throw(flag);

  }

  fprintf(file,"$%s=%s\n",key,value);

 }

 catch(Exception)

 { 

  printf("Can't write file %s",filename);

  exit();

 }

 fflush(file);

 fclose(file);

 return flag; 

}

 

int write_section(char* filename,char* section)

{

 int flag=;

 FILE* file=NULL;

 try

 {

  file=fopen(filename,"a");

  if(file!=NULL)

  {

   fprintf(file,"[%s]\n",section);

  }

  else

  {

   int flag=;

   throw(flag);

  }

 }

 catch(Exception)

 {

  printf("can't open file %s",filename);

  exit();

 }

 fflush(file);

 fclose(file);

 return flag; 

}

int release()

{

 int flag=;

 return flag;

}

int read_section(char* filename)

{

 return ;

}

int getAuthor(char* value)

{

 char author[]="武汉软件工程职业学院计算机应用系孟德军";

 int i=;

 for(i=;i<strlen(author);i++)

 {

 value[i]=author[i];

 }

 return ;

}

void getVersion(char* value)

{

 char version[]="";

 int i=;

 for(i=;i<strlen(version);i++)

 {

 value[i]=version[i];

 }

   

}

/**************************************************************************

void main()

{

 char* str=NULL;

 char author[];

 char buffer[];

 char buffer[];

 char buffer[];

 read_file("F:\\exercise\\C++!C\\sys.ini","password",buffer);

 read_file("F:\\exercise\\C++!C\\sys.ini","username",buffer);

 read_file("F:\\exercise\\C++!C\\sys.ini","driver",buffer);

 printf("password=%s\n",buffer);

 printf("\n");

 printf("username=%s\n",buffer);

 printf("\n");

 printf("driver=%s\n",buffer);

 getAuthor(author);

 printf("\n");

 printf("author=%s",author);

 release();

}

 

转载于:https://www.cnblogs.com/davidwang456/p/3454865.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值