青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 45,  comments - 232,  trackbacks - 0

工程:跨平臺(tái)INI文件讀寫API(C版本)
版本: 0.2.0
授權(quán)方式:GNU GPL
著作權(quán)所有(c) 2007 Midapex
    本程序?yàn)樽杂绍浖荒梢罁?jù)自由軟件基金會(huì)所發(fā)表的GNU通用公共授權(quán)條款規(guī)定,就本程序再為發(fā)布與/或修改;無論您依據(jù)的是本授權(quán)的第二版或(您自行選擇的)任一日后發(fā)行的版本。
   本程序是基于使用目的而加以發(fā)布,然而不負(fù)任何擔(dān)保責(zé)任;亦無對(duì)適售性或特定目的適用性所為的默示性擔(dān)保。詳情請(qǐng)參照GNU通用公共授權(quán)。
源代碼下載地址:http://www.shnenglu.com/Files/dyj057/inifile0.2.0.zip
描述:
版本0.1.0發(fā)布以來,沒想到這么受大家關(guān)注,也提出一些問題。我把問題整理了一下,重寫了部分程序,然后發(fā)布為0.2.0版本,歡迎大家使用。
舊版本地址:http://www.shnenglu.com/dyj057/archive/2006/01/24/3012.html
已測(cè)試通過的開發(fā)環(huán)境:
WinXP、Vista + VC6.0、VS2003、VS2005、VS2008
FC6.0、FC7.0、Ubuntu7.10 + GCC4.1
ARM-Linux+arm-linux-gcc3.3.2

項(xiàng)目特點(diǎn):
1.使用標(biāo)準(zhǔn)C庫函數(shù),支持Windows、Linux、Unix等多平臺(tái)。
2.實(shí)現(xiàn)小巧精致,長期開源支持。
使用示例代碼如下:

    1 /**

    2 * @file

    3 * @brief test ini file api

    4 * @author Deng Yangjun

    5 * @date 2007-1-9

    6 * @version 0.2

    7 */

    8 #include <stdio.h>

    9 #include "inifile.h"

   10 

   11 #define BUF_SIZE 256

   12 

   13 int main()

   14 {

   15     const char *file ="myconfig.ini";

   16     const char *section = "student";

   17     const char *name_key = "name";

   18     const char *age_key = "age";

   19     char name[BUF_SIZE]={0};

   20     int age;

   21 

   22     //write name key value pair

   23     if(!write_profile_string(section,name_key,"Tony",file))

   24     {

   25         printf("write name pair to ini file fail\n");

   26         return -1;

   27     }

   28 

   29     //write age key value pair

   30     if(!write_profile_string(section,age_key,"20",file))

   31     {

   32         printf("write age pair to ini file fail\n");

   33         return -1;

   34     }

   35 

   36     printf("[%s]\n",section);

   37     //read string pair, test read string value

   38     if(!read_profile_string(section, name_key, name, BUF_SIZE,"",file))

   39     {

   40         printf("read ini file fail\n");

   41         return -1;

   42     }

   43     else

   44     {

   45         printf("%s=%s\n",name_key,name);

   46     }

   47 

   48     //read age pair, test read int value.

   49     //if read fail, return default value

   50     age = read_profile_int(section,age_key,0,file);

   51     printf("%s=%d\n",age_key,age);

   52 

   53     return 0;

   54 }

   55 


posted on 2007-12-07 10:18 天下無雙 閱讀(8196) 評(píng)論(35)  編輯 收藏 引用 所屬分類: C/C++

FeedBack:
# re: 發(fā)布C/C++跨平臺(tái)INI文件讀寫API V0.2.0
2007-12-07 11:51 | 夢(mèng)在天涯
謝謝先,看來不錯(cuò)!我也準(zhǔn)備近來整理一下常用的class,說不好就把你的當(dāng)作我的工具了哦1  回復(fù)  更多評(píng)論
  
# re: 發(fā)布C/C++跨平臺(tái)INI文件讀寫API V0.2.0
2007-12-07 12:06 | <a href=http://minidx.com>minidxer</a>
支持!這個(gè)東西還是挺實(shí)用的  回復(fù)  更多評(píng)論
  
# re: 發(fā)布C/C++跨平臺(tái)INI文件讀寫API V0.2.0
2007-12-07 13:41 | 天下無雙
謝謝大家捧場(chǎng)!  回復(fù)  更多評(píng)論
  
# re: 發(fā)布C/C++跨平臺(tái)INI文件讀寫API V0.2.0
2007-12-07 13:57 | 金慶
直覺告訴我,file參數(shù)應(yīng)該放在第一參數(shù)的位置.  回復(fù)  更多評(píng)論
  
# re: 發(fā)布C/C++跨平臺(tái)INI文件讀寫API V0.2.0
2007-12-07 14:15 | 天下無雙
@金慶 參數(shù)的順序是模仿Windows的相同功能的API做的,大家都習(xí)慣了,沒有必要再搞一套吧。
GetPrivateProfileString

The GetPrivateProfileString function retrieves a string from the specified section in an initialization file.

Note This function is provided only for compatibility with 16-bit Windows-based applications. Applications should store initialization information in the registry.


DWORD GetPrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpDefault,
LPTSTR lpReturnedString,
DWORD nSize,
LPCTSTR lpFileName
);

  回復(fù)  更多評(píng)論
  
# re: 發(fā)布C/C++跨平臺(tái)INI文件讀寫API V0.2.0
2007-12-07 16:14 | haskell
支持
最喜歡c語言實(shí)現(xiàn)的東西了
就是沒法像c++寫在一個(gè)文件里包含就行  回復(fù)  更多評(píng)論
  
# re: 發(fā)布C/C++跨平臺(tái)INI文件讀寫API V0.2.0
2007-12-08 00:47 | yeyuboy
建議將api命名成如下:
profile_read_int(const char* profile, const char* section, const char* key, int* value)
profile_read_string(const char* profile, const char* section, const char* key, char* value, unsigned int size)
這樣的好處就是比較OO化,容易記憶,易于被IDE的代碼完成使用。

另外就是完全遵循windows api,名曰移植到linux,這樣不用再學(xué)也省去很多使用文檔。  回復(fù)  更多評(píng)論
  
# re: 發(fā)布C/C++跨平臺(tái)INI文件讀寫API V0.2.0
2007-12-08 13:05 | 天下無雙
@yeyuboy 兄弟,說的好啊,我會(huì)認(rèn)真考慮。想改其實(shí)也不容易,也要考慮以前版本的兼容性問題。我再想想。
  回復(fù)  更多評(píng)論
  
# re: 發(fā)布C/C++跨平臺(tái)INI文件讀寫API V0.2.0
2007-12-08 18:45 | 路過
增加函數(shù)的聲明, 用DEFINE一下不就行了?
#define A1(X,Y) A(Y,X)

另外,如果是C++就好了,呵呵.  回復(fù)  更多評(píng)論
  
# re: 發(fā)布C/C++跨平臺(tái)INI文件讀寫API V0.2.0
2007-12-08 23:21 | 天下無雙
@路過 過幾天出我用C++封裝一下。  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0
2007-12-10 14:15 | 金慶
@天下無雙
Windows API GetPrivateProfileXXX() 將文件名參數(shù)放在最后,是因?yàn)樗С治募麨镹ULL。  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0
2007-12-11 14:45 | 天下無雙
以上的參數(shù)順序問題,在C++版本中已經(jīng)更新過來了,謝謝大家的意見.  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0
2007-12-13 19:07 | aaa
i found 1 bug

if section is

[aaa-1]
aa=1
[aaa-10]
aa=2
then
find section [aaa-10] will find wrong aa  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0
2007-12-13 19:25 | aaa
if( 0 == strncmp(p+section_start,section:i-section_start)) {

change

if( 0 == strncmp(p+section_start,section,((strlen(section)>i-section_start)?strlen(section):i-section_start))) {  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0
2007-12-17 09:23 | DYJ
謝謝樓上的提醒,我會(huì)盡快更新。  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0
2008-01-23 11:17 | yen
十分感謝!我正需要這樣一個(gè)工具.您幫我大忙  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0
2008-06-03 19:21 | rumor
非常感謝啊,找了個(gè)stlplus里的,太大,用得也麻煩,還是你這個(gè)實(shí)用,  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0
2008-07-09 12:28 |
當(dāng)我設(shè)定兩個(gè)變數(shù)

width=10
width2=12
我不管用width或者width2回傳都是10

這個(gè)問題怎麼解決呢?  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0
2008-07-09 21:37 |
看起來似乎解決了
我把
if(strncmp(key,p+newline_start,j-newline_start)==0)
改為
if(strncmp(key,p+newline_start,strlen(key))==0)

暫時(shí)還沒發(fā)現(xiàn)問題  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0
2008-08-01 16:22 | 感謝者
非常感謝樓主!!! 非常好用!  回復(fù)  更多評(píng)論
  
# 確實(shí)很好
2008-09-01 15:09 | 火星人
謝謝主人提供的代碼,確實(shí)很實(shí)用,我做C都10多年了,當(dāng)編寫這個(gè)的時(shí)候還是很手懶,沒想到被樓主編寫了,實(shí)在是太好了,XML和數(shù)據(jù)庫的雖然都有API,但是他們代碼都比較大,比如BOA源代碼里的類試的也有,但是都不如樓主的這個(gè)來的直觀,用在潛入式上面非常小巧\簡潔\方便.
謝謝您的付出.

xemail@sohu.com
  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0
2009-07-02 18:14 | yingyan
簡單,好用,多謝了!  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0
2009-07-26 20:55 | zenghuashan
問題挺多的

[a]
0 = aaa

這樣子就讀不出來。  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0
2009-10-11 19:02 | neilhhw
下了,要謝謝~~~  回復(fù)  更多評(píng)論
  
# 謝了,出于實(shí)用,我又加了一個(gè)。
2010-04-09 09:18 | mmiker
int write_profile_int( const char *section, const char *key,const int value, const char *file)
{
char buf[MAX_FILE_SIZE]={0};
sprintf(buf,"%u",value);
return(write_profile_string((const char *)section, (const char *)key,(const char *)buf, (const char *)file));
}
  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0
2010-04-09 09:25 | mmiker
char buf[MAX_FILE_SIZE]={0};
MAX_FILE_SIZE過于大了,可以改小點(diǎn)。  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0
2010-05-05 08:21 | 路過
謝謝你的提供下載,
if( 0 == strncmp(p+section_start,section, i-section_start))改成
if( (0 == strncmp(p+section_start,section, i-section_start)) && (i-section_start) == strlen(section))

sprintf(w_buf+sec_e,"%s=%s\n",key,value);
sprintf(w_buf+sec_e+strlen(key)+strlen(value)+2,buf+sec_e, file_size - sec_e);改成
sprintf(w_buf+sec_e,"%s=%s\r\n",key,value);
sprintf(w_buf+sec_e+strlen(key)+strlen(value)+3,buf+sec_e, file_size - sec_e);不然的話在windows直接打開會(huì)不能換行,有黑塊。
  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0
2010-08-02 19:54 | zhetengfengzi

可以參考下 http://blog.csdn.net/ddddfw888/archive/2010/08/02/5783165.aspx, 我已經(jīng)對(duì)這個(gè)做了相關(guān)的修改。  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0
2011-03-07 04:24 | Genl
key為 port=1800
key為 port1=1800
結(jié)果一樣 無法區(qū)分port port1
strncmp的問題

if('=' == p[j]) {
if(strlen(key) == (j-newline_start)) //x新加入
if(strncmp(key,p+newline_start,j-newline_start)==0)  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0
2011-03-07 09:35 | DYJ
@Genl
謝謝。  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0[未登錄]
2011-10-16 13:42 | XXX
什么時(shí)候能出新版本啊,我看上面還是有一些Bug的,C++的已經(jīng)更新到V0.2.1版本了  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0[未登錄]
2011-10-16 13:44 | LY
真的十分感謝你的付出,小巧好用,幫了我很大忙啊  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0[未登錄]
2011-10-21 17:36 | 風(fēng)
這個(gè)程序支持多線程嗎,如何讓其支持多線程啊?  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0
2012-07-26 09:34 | raidenzxx
還不錯(cuò),雖然短小,但很實(shí)用  回復(fù)  更多評(píng)論
  
# re: 發(fā)布跨平臺(tái)INI文件讀寫API(C版本) V0.2.0
2014-01-20 11:05 | embeldinux
在linux下gcc編譯,運(yùn)行后,出現(xiàn)無法寫的錯(cuò)誤  回復(fù)  更多評(píng)論
  

常用鏈接

留言簿(15)

隨筆分類

隨筆檔案

相冊(cè)

我的其它領(lǐng)域Blog

搜索

  •  

積分與排名

  • 積分 - 208093
  • 排名 - 129

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            免费观看成人| 欧美日韩mp4| 久久亚洲一区二区| 久久天天躁狠狠躁夜夜av| 久久久精品国产一区二区三区| 欧美在线亚洲综合一区| 久久精品91| 免费成人在线观看视频| 欧美黑人一区二区三区| 欧美日本一区| 国产精品美女久久久久aⅴ国产馆| 国产精品久久久久三级| 国产日韩欧美夫妻视频在线观看| 国产一区二区日韩精品| 亚洲二区在线观看| 亚洲精品在线视频| 亚洲在线视频免费观看| 久久国产精彩视频| 蜜臀久久久99精品久久久久久| 欧美成人国产| 日韩视频在线观看免费| 亚洲一区在线免费| 久久久久久久久久看片| 老司机亚洲精品| 欧美视频四区| 国内成+人亚洲| 日韩特黄影片| 欧美专区日韩视频| 欧美mv日韩mv亚洲| 日韩亚洲欧美一区二区三区| 亚洲欧美一区二区三区极速播放| 久久久久久久一区二区三区| 欧美激情性爽国产精品17p| 国产精品毛片在线看| 激情综合亚洲| 亚洲午夜在线观看| 久久亚洲欧洲| 一本色道88久久加勒比精品| 欧美一区日本一区韩国一区| 欧美国产高清| 国产日韩欧美在线播放| 亚洲激精日韩激精欧美精品| 亚洲在线视频免费观看| 美女精品在线| 亚洲午夜影视影院在线观看| 久久永久免费| 国产精品免费看片| 91久久久久久久久| 久久se精品一区精品二区| 亚洲成在线观看| 亚洲欧美另类久久久精品2019| 免费成人毛片| 国产亚洲精品自拍| 亚洲一区二区三区精品在线观看| 毛片基地黄久久久久久天堂| 99ri日韩精品视频| 美女脱光内衣内裤视频久久影院| 国产精品久久国产三级国电话系列 | 亚洲一区激情| 欧美寡妇偷汉性猛交| 亚洲欧美bt| 欧美精品一区二区三区蜜桃| 国内精品视频在线观看| 亚洲曰本av电影| 亚洲国产精品999| 久久国产主播精品| 国产精品理论片| 一区二区三区产品免费精品久久75| 久久午夜羞羞影院免费观看| 亚洲小少妇裸体bbw| 欧美激情导航| 亚洲高清视频的网址| 久久精品九九| 亚洲免费人成在线视频观看| 欧美日韩中文字幕日韩欧美| 亚洲黄色成人网| 鲁鲁狠狠狠7777一区二区| 亚洲欧美日韩直播| 国产精品乱子乱xxxx| 一区二区三区视频在线| 亚洲国产你懂的| 狂野欧美激情性xxxx欧美| 国内精品久久久久影院优| 欧美亚洲综合久久| 亚洲一区成人| 国产精品国产三级国产| 一区二区三区精品视频在线观看| 亚洲丰满在线| 欧美电影在线观看| 亚洲黄页视频免费观看| 欧美 日韩 国产一区二区在线视频 | 日韩视频一区二区三区| 欧美电影免费网站| 亚洲欧洲精品一区二区三区波多野1战4| 久久久之久亚州精品露出| 香蕉成人久久| 国产一区二区剧情av在线| 欧美主播一区二区三区| 午夜精品一区二区三区四区| 国产区精品视频| 欧美在线观看网站| 午夜视频精品| 国内精品久久久久影院优| 久久婷婷久久| 久久综合网络一区二区| 亚洲激情第一区| 亚洲电影在线看| 欧美精品v国产精品v日韩精品| 亚洲精品国产日韩| 亚洲精品激情| 欧美色中文字幕| 亚洲欧美日韩国产综合精品二区 | 久久综合导航| 久久久综合精品| 亚洲日本成人女熟在线观看| 亚洲激情视频在线| 欧美日韩一区国产| 欧美一进一出视频| 久久精品视频免费| 亚洲黄色大片| 艳女tv在线观看国产一区| 国产精品日韩欧美一区二区三区| 欧美在线观看www| 久久免费国产精品| 亚洲精品久久久一区二区三区| 日韩视频一区二区三区在线播放免费观看| 欧美三级在线视频| 久久99在线观看| 老司机凹凸av亚洲导航| 亚洲最新中文字幕| 亚洲在线国产日韩欧美| 激情久久久久久久| 亚洲国产小视频| 国产精品亚洲片夜色在线| 老色鬼久久亚洲一区二区| 欧美成人午夜视频| 香蕉视频成人在线观看| 久久久久久久波多野高潮日日| 日韩一区二区精品葵司在线| 亚洲一区观看| 亚洲国产小视频| 亚洲自拍偷拍麻豆| 亚洲国产高清在线| 亚洲天堂成人| 亚洲黄网站在线观看| 亚洲一区二区三区精品在线观看 | 久久综合伊人77777| 欧美精品在线观看一区二区| 欧美在线一二三| 欧美成人第一页| 亚洲欧美综合另类中字| 久热这里只精品99re8久| 亚洲欧美精品在线| 久久综合精品国产一区二区三区| 亚洲午夜一区二区三区| 久久亚洲高清| 欧美亚洲午夜视频在线观看| 欧美+日本+国产+在线a∨观看| 欧美一级夜夜爽| 欧美精品情趣视频| 美女久久一区| 国产日产欧美精品| 一本到12不卡视频在线dvd| 亚洲大片在线观看| 亚洲欧美一区二区三区久久 | 午夜久久资源| 亚洲视频中文字幕| 免费美女久久99| 久久婷婷人人澡人人喊人人爽| 欧美三级电影网| 亚洲黄色av一区| 亚洲电影在线| 久久成人综合视频| 亚洲欧美视频在线观看视频| 欧美精品性视频| 欧美国产日韩免费| 永久555www成人免费| 午夜精品理论片| 午夜久久久久| 欧美三级午夜理伦三级中文幕| 亚洲国产成人不卡| 亚洲第一级黄色片| 久久激情五月激情| 久久精品99国产精品| 国产精品久久国产三级国电话系列| 91久久精品国产91久久性色tv| 影音先锋日韩有码| 久久精品动漫| 久久视频在线看| 国产一区二区成人| 性色av一区二区三区在线观看| 午夜国产不卡在线观看视频| 欧美日韩免费在线观看| 亚洲黄色毛片| 日韩视频中文字幕| 欧美精品一区二区三区很污很色的 | 亚洲欧美日韩国产另类专区| 欧美日韩亚洲高清一区二区| 亚洲九九九在线观看| 在线中文字幕不卡|