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

INI Manipulation using C

, 22 Aug 2006
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)

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 
This library looks nice for me. But I need version for linux. Is ant possibilites to get it ? I know ini file are less nad less in use but ... Thanks in aedvance
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 
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
Web03 | 2.8.140721.1 | Last Updated 23 Aug 2006
Article Copyright 2006 by TooBaya
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid