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语言程序设计有所帮助。