激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - C/C++ - C語言讀寫配置文件的方法

C語言讀寫配置文件的方法

2021-03-03 14:26華宰 C/C++

這篇文章主要介紹了C語言讀寫配置文件的方法,包括C語言讀寫ini配置文件所涉及的文件讀寫技巧,以及完整的源文件及頭文件實現(xiàn)方法,需要的朋友可以參考下

本文實例講述了C語言讀寫配置文件的方法。分享給大家供大家參考。具體如下:

CException.h如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/************************************************************************/
/*       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如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#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();
//寫入節(jié).
int write_section(char* filename,char* section);
int read_section(char* filename);
int getAuthor(char* value);
void getVersion(char* value);

File.c如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#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]=='$'&&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]="武漢軟件工程職業(yè)學(xué)院計算機應(yīng)用系";
 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語言程序設(shè)計有所幫助。

延伸 · 閱讀

精彩推薦
  • C/C++c++ 單線程實現(xiàn)同時監(jiān)聽多個端口

    c++ 單線程實現(xiàn)同時監(jiān)聽多個端口

    這篇文章主要介紹了c++ 單線程實現(xiàn)同時監(jiān)聽多個端口的方法,幫助大家更好的理解和學(xué)習(xí)使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C語言實現(xiàn)電腦關(guān)機程序

    C語言實現(xiàn)電腦關(guān)機程序

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)電腦關(guān)機程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++深入理解goto語句的替代實現(xiàn)方式分析

    深入理解goto語句的替代實現(xiàn)方式分析

    本篇文章是對goto語句的替代實現(xiàn)方式進行了詳細(xì)的分析介紹,需要的朋友參考下...

    C語言教程網(wǎng)7342020-12-03
  • C/C++C/C++經(jīng)典實例之模擬計算器示例代碼

    C/C++經(jīng)典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關(guān)于C/C++經(jīng)典實例之模擬計算器的相關(guān)資料,文中通過示...

    jia150610152021-06-07
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++學(xué)習(xí)C++編程的必備軟件

    學(xué)習(xí)C++編程的必備軟件

    本文給大家分享的是作者在學(xué)習(xí)使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數(shù)使用

    詳解c語言中的 strcpy和strncpy字符串函數(shù)使用

    strcpy 和strcnpy函數(shù)是字符串復(fù)制函數(shù)。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數(shù)使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內(nèi)存中的數(shù)據(jù)都是暫時的,當(dāng)程序結(jié)束時,它們都將丟失,為了永久性的保存大量的數(shù)據(jù),C語言提供了對文件的操作,這篇文章主要給大家介紹了關(guān)于C語言中文件...

    針眼_6702022-01-24
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 国产在线精品一区二区三区 | 久久视频精品 | 欧美爱爱视频免费看 | 久久影院yy6080| 在线播放91 | 欧美一级电影网站 | xx53xx| 精品二区在线观看 | 国产羞羞网站 | 一级毛片免费一级 | 31freehdxxxx欧美 | 激情小说激情图片激情电影 | h视频在线观看免费 | 欧美日韩国产一区二区三区在线观看 | 91精品国产91久久久久久不卞 | 综合精品久久 | 成人久久久精品乱码一区二区三区 | 欧美a∨一区二区三区久久黄 | 91成人免费网站 | 日本在线看片 | 日本羞羞的午夜电视剧 | 逼片视频 | 草草免费视频 | 国产1区在线 | 日韩av在线网 | 免费一级毛片在线播放不收费 | 国产女厕所| 国产精品一区二区视频 | 亚洲啪 | chinese 军人 gay xx 呻吟 | 国产区二区 | 久久久久久久久久综合 | xxxxhd73国产 | 最污网站 | 免费a级毛片大学生免费观看 | 久久久久91视频 | 精品xxxx户外露出视频 | 91久久国产综合久久91猫猫 | 国产一级做a爰片在线看 | 日韩精品中文字幕一区二区 | 永久免费黄色大片 |