linux怎么查看ini文件内容

 我来答
兔子我爱你0222
2016-12-06 · TA获得超过210个赞
知道答主
回答量:58
采纳率:50%
帮助的人:21.3万
展开全部
1. #define CONF_FILE_PATH "Config.ini"
2.
3. #include <string.h>
4.
5. #ifdef WIN32
6. #include <Windows.h>
7. #include <stdio.h>
8. #else
9.
10.#define MAX_PATH 260
11.
12.#include <unistd.h>
13.#include <fcntl.h>
14.#include <stdio.h>
15.#include <stdlib.h>
16.#include <stdarg.h>
17.#endif
18.
19.char g_szConfigPath[MAX_PATH];
20.
21.//获取当前程序目录
22.int GetCurrentPath(char buf[],char *pFileName)
23.{
24.#ifdef WIN32
25. GetModuleFileName(NULL,buf,MAX_PATH);
26.#else
27. char pidfile[64];
28. int bytes;
29. int fd;
30.
31. sprintf(pidfile, "/proc/%d/cmdline", getpid());
32.
33. fd = open(pidfile, O_RDONLY, 0);
34. bytes = read(fd, buf, 256);
35. close(fd);
36. buf[MAX_PATH] = '\0';
37.
38.#endif
39. char * p = &buf[strlen(buf)];
40. do
41. {
42. *p = '\0';
43. p--;
44.#ifdef WIN32
45. } while( '\\' != *p );
46.#else
47. } while( '/' != *p );
48.#endif
49.
50. p++;
51.
52. //配置文件目录
53. memcpy(p,pFileName,strlen(pFileName));
54. return 0;
55.}
56.
57.//从INI文件读取字符串类型数据
58.char *GetIniKeyString(char *title,char *key,char *filename)
59.{
60. FILE *fp;
61. char szLine[1024];
62. static char tmpstr[1024];
63. int rtnval;
64. int i = 0;
65. int flag = 0;
66. char *tmp;
67.
68. if((fp = fopen(filename, "r")) == NULL)
69. {
70. printf("have no such file \n");
71. return "";
72. }
73. while(!feof(fp))
74. {
75. rtnval = fgetc(fp);
76. if(rtnval == EOF)
77. {
78. break;
79. }
80. else
81. {
82. szLine[i++] = rtnval;
83. }
84. if(rtnval == '\n')
85. {
86.#ifndef WIN32
87. i--;
88.#endif
89. szLine[--i] = '\0';
90. i = 0;
91. tmp = strchr(szLine, '=');
92.
93. if(( tmp != NULL )&&(flag == 1))
94. {
95. if(strstr(szLine,key)!=NULL)
96. {
97. //注释行
98. if ('#' == szLine[0])
99. {
100. }
101. else if ( '\/' == szLine[0] && '\/' == szLine[1] )
102. {
103.
104. }
105. else
106. {
107. //找打key对应变量
108. strcpy(tmpstr,tmp+1);
109. fclose(fp);
110. return tmpstr;
111. }
112. }
113. }
114. else
115. {
116. strcpy(tmpstr,"[");
117. strcat(tmpstr,title);
118. strcat(tmpstr,"]");
119. if( strncmp(tmpstr,szLine,strlen(tmpstr)) == 0 )
120. {
121. //找到title
122. flag = 1;
123. }
124. }
125. }
126. }
127. fclose(fp);
128. return "";
129. }
130.
131. //从INI文件读取整类型数据
132. int GetIniKeyInt(char *title,char *key,char *filename)
133. {
134. return atoi(GetIniKeyString(title,key,filename));
135. }
136.
137. int main(int argc, char* argv[])
138. {
139. char buf[MAX_PATH];
140. memset(buf,0,sizeof(buf));
141. GetCurrentPath(buf,CONF_FILE_PATH);
142. strcpy(g_szConfigPath,buf);
143.
144. int iCatAge;
145. char szCatName[32];
146.
147. iCatAge = GetIniKeyInt("CAT","age",g_szConfigPath);
148. strcpy(szCatName,GetIniKeyString("CAT","name",g_szConfigPath));
149.
150. return 0;
151. }

152. [CAT]
153. age=2
154. name=Tom
155.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式