首页 > 编程 > C++ > 正文

C语言读写配置文件的方法

2020-05-23 14:17:52
字体:
来源:转载
供稿:网友

这篇文章主要介绍了C语言读写配置文件的方法,包括C语言读写ini配置文件所涉及的文件读写技巧,以及完整的源文件及头文件实现方法,需要的朋友可以参考下

本文实例讲述了C语言读写配置文件的方法。分享给大家供大家参考。具体如下:

CException.h如下:

 

 
  1. /************************************************************************/ 
  2. /* make0000@msn.com */ 
  3. /************************************************************************/ 
  4. /************************************************************************/ 
  5. #include "stdio.h"  
  6. #include "conio.h"  
  7. #include "signal.h"  
  8. #include "setjmp.h"  
  9. #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. #else  
  28. #define dllexport __declspec(dllexport)  
  29. jmp_buf Jmp_Buf;  
  30. int E;  
  31. #define Exception 0x00000  
  32. #define e Exception  
  33. #define try if(!(E=setjmp(Jmp_Buf)))  
  34. #define last_error() E  
  35. #define catch(val) else  
  36. #define throw(val) longjmp(Jmp_Buf,val) 
  37. #define check(expersion) assert(expersion)  
  38. #define GetError() errno 
  39. dllexport void sig_usr(int);  
  40. dllexport char* getTime(); 
  41. #endif 

File.h如下:

 

 
  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include <string.h>  
  4. #include <windows.h>  
  5. #define SIZE 128  
  6. #include "CException.h"  
  7. #define export __declspec(dllexport)  
  8. //读取配置文件.  
  9. 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如下:

 

 
  1. #include "File.h"  
  2. #include <string.h>  
  3. int read_file(char* filename,char* key,char* value)  
  4. {  
  5. int flag=0;  
  6. char buffer[SIZE];  
  7. FILE *file=fopen(filename,"r");  
  8. try 
  9. {  
  10. if(file==NULL)  
  11. {  
  12. flag=1;  
  13. throw(flag);  
  14. }  
  15. else 
  16. {  
  17. while(fgets(buffer,SIZE,file)!=NULL)  
  18. {  
  19. int i=0,j=0,len=strlen(key);  
  20. while(buffer[i]!='/0')  
  21. {  
  22. if(buffer[i]==' 
  23. 希望本文所述对大家的C语言程序设计有所帮助。 
  24.  
  25. &&buffer[i+len+1]=='='
  26.  
  27.  
  28. {  
  29. j=i+len+2;  
  30. while(buffer[j]!='/0'&&buffer[j]!=';')  
  31. {  
  32. int h=0;  
  33. if(buffer[i+1]==key[i])  
  34. {  
  35. //printf("%c",buffer[j]);  
  36. value[j-i-len-2]=buffer[j];  
  37. }  
  38. j++;  
  39. }  
  40. break;  
  41. }  
  42. else if(buffer[i]=='/'&&buffer[i+1]=='/'||buffer[i]==';')  
  43. {  
  44. break;  
  45. //comment  
  46. }  
  47. i++;  
  48. }  
  49. }  
  50. }  
  51. }  
  52. catch(Exception)  
  53. {  
  54. flag=2;  
  55. fclose(file);  
  56. printf("can't open file %s",filename);  
  57. exit(1);  
  58. }  
  59. fflush(file);  
  60. fclose(file);  
  61. return flag;  
  62. }  
  63. int write_file(char* filename,char* key,char* value)  
  64. {  
  65. int flag=0;  
  66. FILE* file;  
  67. file=fopen(filename,"a");  
  68. try 
  69. {  
  70. if(file==NULL)  
  71. {  
  72. flag=1;  
  73. throw(flag);  
  74. }  
  75. fprintf(file,"$%s=%s/n",key,value);  
  76. }  
  77. catch(Exception)  
  78. {  
  79. printf("Can't write file %s",filename);  
  80. exit(1);  
  81. }  
  82. fflush(file);  
  83. fclose(file);  
  84. return flag;  
  85. }  
  86. int write_section(char* filename,char* section)  
  87. {  
  88. int flag=0;  
  89. FILE* file=NULL;  
  90. try 
  91. {  
  92. file=fopen(filename,"a");  
  93. if(file!=NULL)  
  94. {  
  95. fprintf(file,"[%s]/n",section);  
  96. }  
  97. else 
  98. {  
  99. int flag=1;  
  100. throw(flag);  
  101. }  
  102. }  
  103. catch(Exception)  
  104. {  
  105. printf("can't open file %s",filename);  
  106. exit(0);  
  107. }  
  108. fflush(file);  
  109. fclose(file);  
  110. return flag;  
  111. }  
  112. int release()  
  113. {  
  114. int flag=1;  
  115. return flag;  
  116. }  
  117. int read_section(char* filename)  
  118. {  
  119. return 0;  
  120. }  
  121. int getAuthor(char* value)  
  122. {  
  123. char author[128]="武汉软件工程职业学院计算机应用系";  
  124. int i=0;  
  125. for(i=0;i<strlen(author);i++)  
  126. {  
  127. value[i]=author[i];  
  128. }  
  129. return 0;  
  130. }  
  131. void getVersion(char* value)  
  132. {  
  133. char version[128]="2009//05//01";  
  134. int i=0;  
  135. for(i=0;i<strlen(version);i++)  
  136. {  
  137. value[i]=version[i];  
  138. }  
  139. }  
  140. /**************************************************************************  
  141. void main()  
  142. {  
  143. char* str=NULL;  
  144. char author[120];  
  145. char buffer[128];  
  146. char buffer1[128];  
  147. char buffer2[128];  
  148. read_file("F://exercise//C++!C//sys.ini","password",buffer);  
  149. read_file("F://exercise//C++!C//sys.ini","username",buffer1);  
  150. read_file("F://exercise//C++!C//sys.ini","driver",buffer2);  
  151. printf("password=%s/n",buffer);  
  152. printf("/n");  
  153. printf("username=%s/n",buffer1);  
  154. printf("/n");  
  155. printf("driver=%s/n",buffer2);  
  156. getAuthor(author);  
  157. printf("/n");  
  158. printf("author=%s",author);  
  159. release();  

希望本文所述对大家的C语言程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表