这篇文章主要介绍了C语言读写配置文件的方法,包括C语言读写ini配置文件所涉及的文件读写技巧,以及完整的源文件及头文件实现方法,需要的朋友可以参考下
本文实例讲述了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"{
- #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
- #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();
- #endif
File.h如下:
- #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);
File.c如下:
- #include "File.h"
- #include <string.h>
- int read_file(char* filename,char* key,char* value)
- {
- int flag=0;
- char buffer[SIZE];
- FILE *file=fopen(filename,"r");
- try
- {
- if(file==NULL)
- {
- flag=1;
- throw(flag);
- }
- else
- {
- while(fgets(buffer,SIZE,file)!=NULL)
- {
- int i=0,j=0,len=strlen(key);
- while(buffer[i]!='/0')
- {
- if(buffer[i]=='
- 希望本文所述对大家的C语言程序设计有所帮助。
- &&buffer[i+len+1]=='=')
- {
- j=i+len+2;
- while(buffer[j]!='/0'&&buffer[j]!=';')
- {
- int h=0;
- if(buffer[i+1]==key[i])
- {
- //printf("%c",buffer[j]);
- value[j-i-len-2]=buffer[j];
- }
- j++;
- }
- break;
- }
- else if(buffer[i]=='/'&&buffer[i+1]=='/'||buffer[i]==';')
- {
- break;
- //comment
- }
- i++;
- }
- }
- }
- }
- catch(Exception)
- {
- flag=2;
- fclose(file);
- printf("can't open file %s",filename);
- exit(1);
- }
- fflush(file);
- fclose(file);
- return flag;
- }
- int write_file(char* filename,char* key,char* value)
- {
- int flag=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't write file %s",filename);
- exit(1);
- }
- fflush(file);
- fclose(file);
- return flag;
- }
- int write_section(char* filename,char* section)
- {
- int flag=0;
- FILE* file=NULL;
- try
- {
- file=fopen(filename,"a");
- if(file!=NULL)
- {
- fprintf(file,"[%s]/n",section);
- }
- else
- {
- int flag=1;
- throw(flag);
- }
- }
- catch(Exception)
- {
- printf("can't open file %s",filename);
- exit(0);
- }
- fflush(file);
- fclose(file);
- return flag;
- }
- int release()
- {
- int flag=1;
- return flag;
- }
- int read_section(char* filename)
- {
- return 0;
- }
- int getAuthor(char* value)
- {
- char author[128]="武汉软件工程职业学院计算机应用系";
- int i=0;
- for(i=0;i<strlen(author);i++)
- {
- value[i]=author[i];
- }
- return 0;
- }
- void getVersion(char* value)
- {
- char version[128]="2009//05//01";
- int i=0;
- for(i=0;i<strlen(version);i++)
- {
- value[i]=version[i];
- }
- }
- /**************************************************************************
- void main()
- {
- char* str=NULL;
- char author[120];
- char buffer[128];
- char buffer1[128];
- char buffer2[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语言程序设计有所帮助。
新闻热点
疑难解答