• <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>
            posts - 45,  comments - 232,  trackbacks - 0

            工程:跨平臺INI文件讀寫API(C版本)
            版本: 0.2.0
            授權方式:GNU GPL
            著作權所有(c) 2007 Midapex
                本程序為自由軟件;您可依據(jù)自由軟件基金會所發(fā)表的GNU通用公共授權條款規(guī)定,就本程序再為發(fā)布與/或修改;無論您依據(jù)的是本授權的第二版或(您自行選擇的)任一日后發(fā)行的版本。
               本程序是基于使用目的而加以發(fā)布,然而不負任何擔保責任;亦無對適售性或特定目的適用性所為的默示性擔保。詳情請參照GNU通用公共授權。
            源代碼下載地址:http://www.shnenglu.com/Files/dyj057/inifile0.2.0.zip
            描述:
            版本0.1.0發(fā)布以來,沒想到這么受大家關注,也提出一些問題。我把問題整理了一下,重寫了部分程序,然后發(fā)布為0.2.0版本,歡迎大家使用。
            舊版本地址:http://www.shnenglu.com/dyj057/archive/2006/01/24/3012.html
            已測試通過的開發(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

            項目特點:
            1.使用標準C庫函數(shù),支持Windows、Linux、Unix等多平臺。
            2.實現(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 天下無雙 閱讀(8086) 評論(35)  編輯 收藏 引用 所屬分類: C/C++

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

              回復  更多評論
              
            # re: 發(fā)布C/C++跨平臺INI文件讀寫API V0.2.0
            2007-12-07 16:14 | haskell
            支持
            最喜歡c語言實現(xiàn)的東西了
            就是沒法像c++寫在一個文件里包含就行  回復  更多評論
              
            # re: 發(fā)布C/C++跨平臺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,這樣不用再學也省去很多使用文檔。  回復  更多評論
              
            # re: 發(fā)布C/C++跨平臺INI文件讀寫API V0.2.0
            2007-12-08 13:05 | 天下無雙
            @yeyuboy 兄弟,說的好啊,我會認真考慮。想改其實也不容易,也要考慮以前版本的兼容性問題。我再想想。
              回復  更多評論
              
            # re: 發(fā)布C/C++跨平臺INI文件讀寫API V0.2.0
            2007-12-08 18:45 | 路過
            增加函數(shù)的聲明, 用DEFINE一下不就行了?
            #define A1(X,Y) A(Y,X)

            另外,如果是C++就好了,呵呵.  回復  更多評論
              
            # re: 發(fā)布C/C++跨平臺INI文件讀寫API V0.2.0
            2007-12-08 23:21 | 天下無雙
            @路過 過幾天出我用C++封裝一下。  回復  更多評論
              
            # re: 發(fā)布跨平臺INI文件讀寫API(C版本) V0.2.0
            2007-12-10 14:15 | 金慶
            @天下無雙
            Windows API GetPrivateProfileXXX() 將文件名參數(shù)放在最后,是因為它支持文件名為NULL。  回復  更多評論
              
            # re: 發(fā)布跨平臺INI文件讀寫API(C版本) V0.2.0
            2007-12-11 14:45 | 天下無雙
            以上的參數(shù)順序問題,在C++版本中已經(jīng)更新過來了,謝謝大家的意見.  回復  更多評論
              
            # re: 發(fā)布跨平臺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  回復  更多評論
              
            # re: 發(fā)布跨平臺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))) {  回復  更多評論
              
            # re: 發(fā)布跨平臺INI文件讀寫API(C版本) V0.2.0
            2007-12-17 09:23 | DYJ
            謝謝樓上的提醒,我會盡快更新。  回復  更多評論
              
            # re: 發(fā)布跨平臺INI文件讀寫API(C版本) V0.2.0
            2008-01-23 11:17 | yen
            十分感謝!我正需要這樣一個工具.您幫我大忙  回復  更多評論
              
            # re: 發(fā)布跨平臺INI文件讀寫API(C版本) V0.2.0
            2008-06-03 19:21 | rumor
            非常感謝啊,找了個stlplus里的,太大,用得也麻煩,還是你這個實用,  回復  更多評論
              
            # re: 發(fā)布跨平臺INI文件讀寫API(C版本) V0.2.0
            2008-07-09 12:28 |
            當我設定兩個變數(shù)

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

            這個問題怎麼解決呢?  回復  更多評論
              
            # re: 發(fā)布跨平臺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)

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

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

            [a]
            0 = aaa

            這樣子就讀不出來。  回復  更多評論
              
            # re: 發(fā)布跨平臺INI文件讀寫API(C版本) V0.2.0
            2009-10-11 19:02 | neilhhw
            下了,要謝謝~~~  回復  更多評論
              
            # 謝了,出于實用,我又加了一個。
            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));
            }
              回復  更多評論
              
            # re: 發(fā)布跨平臺INI文件讀寫API(C版本) V0.2.0
            2010-04-09 09:25 | mmiker
            char buf[MAX_FILE_SIZE]={0};
            MAX_FILE_SIZE過于大了,可以改小點。  回復  更多評論
              
            # re: 發(fā)布跨平臺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直接打開會不能換行,有黑塊。
              回復  更多評論
              
            # re: 發(fā)布跨平臺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)對這個做了相關的修改。  回復  更多評論
              
            # re: 發(fā)布跨平臺INI文件讀寫API(C版本) V0.2.0
            2011-03-07 04:24 | Genl
            key為 port=1800
            key為 port1=1800
            結果一樣 無法區(qū)分port port1
            strncmp的問題

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

            常用鏈接

            留言簿(15)

            隨筆分類

            隨筆檔案

            相冊

            我的其它領域Blog

            搜索

            •  

            積分與排名

            • 積分 - 205723
            • 排名 - 130

            最新評論

            閱讀排行榜

            評論排行榜

            99国产欧美久久久精品蜜芽| 亚洲欧美精品伊人久久| 亚洲精品国产自在久久| 久久精品免费一区二区| 久久久老熟女一区二区三区| 青青草原综合久久| 一本久久a久久精品综合香蕉| 无码国内精品久久人妻| 久久天天躁狠狠躁夜夜av浪潮 | 色综合久久久久| 欧美伊人久久大香线蕉综合69| 青青草国产97免久久费观看| 香蕉99久久国产综合精品宅男自 | 精品一区二区久久| 无码任你躁久久久久久| 久久r热这里有精品视频| 久久SE精品一区二区| 99久久精品国产一区二区蜜芽| 久久强奷乱码老熟女网站| 岛国搬运www久久| 国产婷婷成人久久Av免费高清 | 香蕉久久一区二区不卡无毒影院| 久久国产精品视频| 色欲久久久天天天综合网| 久久久久久亚洲精品不卡| 日产精品久久久久久久性色| 久久久精品日本一区二区三区| 丰满少妇人妻久久久久久| 久久这里只有精品首页| 日韩欧美亚洲国产精品字幕久久久| 波多野结衣中文字幕久久| 中文字幕久久久久人妻| 久久亚洲国产最新网站| 久久久久亚洲AV成人网人人软件| 97久久精品午夜一区二区| 国产亚洲综合久久系列| 久久ZYZ资源站无码中文动漫 | 亚洲国产欧洲综合997久久| 久久综合鬼色88久久精品综合自在自线噜噜| 国内精品久久久久影院优| 久久久久久午夜成人影院|