C语言读写配置文件的方法
本文实例讲述了C语言读写配置文件的方法。分享给大家供大家参考。具体如下:
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"{
#definedllexport__declspec(dllexport)
jmp_bufJmp_Buf;
intE;
#defineException0x00000
#defineeException
#definetryif(!(E=setjmp(Jmp_Buf)))
#definelast_error()E
#definecatch(val)else
#definethrow(val)longjmp(Jmp_Buf,val)
#definecheck(expersion)assert(expersion)
#defineGetError()errno
dllexportvoidsig_usr(int);
dllexportchar*getTime();
}
#else
#definedllexport__declspec(dllexport)
jmp_bufJmp_Buf;
intE;
#defineException0x00000
#defineeException
#definetryif(!(E=setjmp(Jmp_Buf)))
#definelast_error()E
#definecatch(val)else
#definethrow(val)longjmp(Jmp_Buf,val)
#definecheck(expersion)assert(expersion)
#defineGetError()errno
dllexportvoidsig_usr(int);
dllexportchar*getTime();
#endif
File.h如下:
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<windows.h> #defineSIZE128 #include"CException.h" #defineexport__declspec(dllexport) //读取配置文件. intread_file(char*filename,char*key,char*value); //写配置文件. intwrite_file(char*filename,char*key,char*value); //释放文件. intrelease(); //写入节. intwrite_section(char*filename,char*section); intread_section(char*filename); intgetAuthor(char*value); voidgetVersion(char*value);
File.c如下:
#include"File.h"
#include<string.h>
intread_file(char*filename,char*key,char*value)
{
intflag=0;
charbuffer[SIZE];
FILE*file=fopen(filename,"r");
try
{
if(file==NULL)
{
flag=1;
throw(flag);
}
else
{
while(fgets(buffer,SIZE,file)!=NULL)
{
inti=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]!=';')
{
inth=0;
if(buffer[i+1]==key[i])
{
//printf("%c",buffer[j]);
value[j-i-len-2]=buffer[j];
}
j++;
}
break;
}
elseif(buffer[i]=='/'&&buffer[i+1]=='/'||buffer[i]==';')
{
break;
//comment
}
i++;
}
}
}
}
catch(Exception)
{
flag=2;
fclose(file);
printf("can'topenfile%s",filename);
exit(1);
}
fflush(file);
fclose(file);
returnflag;
}
intwrite_file(char*filename,char*key,char*value)
{
intflag=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'twritefile%s",filename);
exit(1);
}
fflush(file);
fclose(file);
returnflag;
}
intwrite_section(char*filename,char*section)
{
intflag=0;
FILE*file=NULL;
try
{
file=fopen(filename,"a");
if(file!=NULL)
{
fprintf(file,"[%s]\n",section);
}
else
{
intflag=1;
throw(flag);
}
}
catch(Exception)
{
printf("can'topenfile%s",filename);
exit(0);
}
fflush(file);
fclose(file);
returnflag;
}
intrelease()
{
intflag=1;
returnflag;
}
intread_section(char*filename)
{
return0;
}
intgetAuthor(char*value)
{
charauthor[128]="武汉软件工程职业学院计算机应用系";
inti=0;
for(i=0;i<strlen(author);i++)
{
value[i]=author[i];
}
return0;
}
voidgetVersion(char*value)
{
charversion[128]="2009//05//01";
inti=0;
for(i=0;i<strlen(version);i++)
{
value[i]=version[i];
}
}
/**************************************************************************
voidmain()
{
char*str=NULL;
charauthor[120];
charbuffer[128];
charbuffer1[128];
charbuffer2[128];
read_file("F:\\exercise\\C++!C\\sys.ini","password",buffer);
read_file("F:\\exercise\\C++!C\\sys.ini","username",buffer1);
read_file("F:\\exercise\\C++!C\\sys.ini","driver",buffer2);
printf("password=%s\n",buffer);
printf("\n");
printf("username=%s\n",buffer1);
printf("\n");
printf("driver=%s\n",buffer2);
getAuthor(author);
printf("\n");
printf("author=%s",author);
release();
}
希望本文所述对大家的C语言程序设计有所帮助。