Click here to Skip to main content
Click here to Skip to main content

INI Manipulation using C

, 22 Aug 2006 CPOL
Rate this:
Please Sign up or sign in to vote.
Using C to read and write INI file
Sample Image - Screen.jpg

Introduction

This project uses C and linklist to implement and manage INI files. This project is a sample of linklist implementation.

Sample Usage

    ini_start("sample.ini");
    //save_as("test.ini");
    buffer = get_value("Main","PLC");
    printf("value : %s\n",buffer);
    printf("last error is %s\n",get_last_error());
    //print_content();    
    ini_end();

How To Implement

This project uses linklist to make a sample tree for collecting INI file data. INI file in this project must separate using "=". This is a sample function to manage INI file.

/*****************************************************************/
/* main ini manage function                                             */
/************************************************************************/
/**
 *    function: ini_start                                                        
 *    parameter:                                                        
 *        @filename                                                            
 *    return:    true if success
 *    purpose: for start ini manipulate file
 */
bool ini_start(const char* filename);

/**
 *    function:    load                                                    
 *    parameter:                                                        
 *        @filename                                                            
 *    return:        true if success
 *    purpose:    for load ini file to content
 */

bool load(const char *filename);

/**
 *    function:    _save                                                    
 *    parameter:                                                        
 *        @filename                                                            
 *    return:        true if success
 *    purpose:    save content to ini file(save as)
 */
bool save();    // save to load filebool 
bool save_as(const char *filename);

/**
 *    function:    get_value                                                    
 *    parameter:                                                        
 *        @                                                            
 *    return:        value
 *    purpose:    ?                                                    
 */
char *get_value (const char *sec,const char *key);
char *_get_value(const char *sec,const char *key,   // return data and comment
                 char *comment);
/**
 *    function:    set_value
 *    parameter:                                                        
 *        @                                                            
 *    return:        true if success
 *    purpose:            
 */
bool set_value  (const char *sec,const char *key,        // will auto replace
                 const char *value);    
bool _set_value (const char *sec,const char *key,    // select replace or not replace
                 const char *value,const char *comment,REPLACE_FLAG flag);

int  remove_sel (const char *sec,char *key);
int  remove_all (const char * sec);                // remove all record in section

// add/remove section
void add_section(const char *sec,const char *comment);    // add section
int  remove_section(char *sec);  	// remove section (remove all record 
				// in section if not empty)

void clear();                                	// clear all content

// size of section
int  content_size();
int  section_size(char *sec);

// for console display use stdio.h stdout
void print_content();                        	// print all content
void print_section();                        	// print all only section
void print_record(char *sec,char *key);   	// print selection record
void print_allrecord(char *sec);            	// print all record in section

/**
 *    function: ini_end                                                    
 *    parameter:                                                        
 *        none                                                                    
 *    return:    void                                                        
 *    purpose: for end ini manipulate file
 */
void ini_end();
void _ini_end(REPLACE_FLAG flag);

/**
 *    function: get_last_error
 *    parameter:                                                        
 *        none                                                            
 *    return:    type of error   
 *    purpose:    for get error      
 */
char *get_last_error();

History

  • 22nd August, 2006: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

TooBaya
Web Developer
Thailand Thailand
C++,Window,Linux Programming
Measurement and Control System.

Comments and Discussions

 
Questionversion for Linux ? Pinmemberdereach26-Jan-09 0:18 
AnswerRe: version for Linux ? PinmemberTooBaya16-Apr-09 17:48 
GeneralBest and Simple INI Manipulation I ever Seen Pinmemberlv4415-May-08 7:16 
Generalcfind a bug Pinmemberyangqi.cn11-Sep-06 23:10 
Generalimplementation... Pinmemberoleg54222-Aug-06 21:03 
GeneralThank for comment PinmemberTooBaya22-Aug-06 20:49 
GeneralRe: Thank for comment PinmemberDaTxomin22-Aug-06 20:56 
Aside from your love of self, ini files still have their uses.
 
I give you a 4 because there are already many articles on the subject. Still, good work.
GeneralYou can use Win32 SDK functions ... PinmemberRobert W.22-Aug-06 20:39 
GeneralRe: You can use Win32 SDK functions ... Pinmemberyama no mura9-Oct-07 21:55 
NewsINI files are dead PinmemberToby Opferman22-Aug-06 20:21 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web01 | 2.8.141015.1 | Last Updated 23 Aug 2006
Article Copyright 2006 by TooBaya
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid