That was easy. Now let's extend the program a bit so we can greet more than one "target". We'd like to be able to specify a list of targets to greet.
            The list versions of the initialization macros are named
            CFG_STR_LIST(),
            CFG_INT_LIST(),
            CFG_BOOL_LIST() and
            CFG_FLOAT_LIST(). They take the same
            parameters as the non-list versions, except the default value must
            be a string surrounded by curly braces.
        
The modified program is shown below:
1	#include <stdio.h>
2	#include <confuse.h>
3	
4	int main(void)
5	{
6	    cfg_opt_t opts[] =
7	    {
8	        CFG_STR_LIST("targets", "{World}", CFGF_NONE),
9	        CFG_INT("repeat", 1, CFGF_NONE),
10	        CFG_END()
11	    };
12	    cfg_t *cfg;
13	    int repeat;
14	    int i;
15	
16	    cfg = cfg_init(opts, CFGF_NONE);
17	    if(cfg_parse(cfg, "hello.conf") == CFG_PARSE_ERROR)
18	        return 1;
19	
20	    repeat = cfg_getint(cfg, "repeat");
21	    while(repeat--)
22	    {
23	        printf("Hello");
24	        for(i = 0; i < cfg_size(cfg, "targets"); i++)
25	            printf(", %s", cfg_getnstr(cfg, "targets", i));
26	        printf("!\n");
27	    }
28	
29	    cfg_free(cfg);
30	    return 0;
31	}
32	
            Three things are a bit different here. First, the macro to
            initialize the "targets" option is
            CFG_STR_LIST(). This tells libConfuse that
            "targets" is a list of strings. Second, the default value in the
            second parameter is surrounded by curly braces. This is needed to
            indicate to libConfuse where the list of values ends.
        
            The third change is in the printing of the greeting. First we print
            the "Hello" string. Then we loop through all values found for the
            "targets" option. The number of values is retrieved with the
            cfg_size() function. The string values are
            then retrieved with cfg_getnstr(), which is an
            indexed version of cfg_getstr(). In fact,
            cfg_getstr() is equivalent to
            cfg_getnstr() with an index of zero.
        
In the configuration file hello.conf, we can now specify a list of targets to greet:
# this is the configuration file for the hello program
targets = {"Life", "Universe", "Everything"}
repeat = 1
        The output of the hello program, run with the above configuration file, is: "Hello, Life, Universe, Everything!"
Again, if no targets were configured, the greeting would have been the standard "Hello, World!".