linux-c-programming.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff Woods <kazrak+kernel@cesmail.net>
To: Matthew Harrison <matth@3d-computers.co.uk>
Cc: linux-c-programming@vger.kernel.org
Subject: Re: named structure members
Date: Thu, 11 Sep 2003 04:50:39 -0700	[thread overview]
Message-ID: <5.2.1.1.0.20030911044032.01ac2a60@no.incoming.mail> (raw)
In-Reply-To: <20030911110742.GD6863@3d-computers.co.uk>

At 9/11/2003 12:07 PM +0100, Matthew Harrison wrote:
><snip>
>for(i = 0; i < n_values; ++i)
>         {
>                 strcpy(keyword, good_values[i]);
>
>                 switch (read_config_var(values_file, keyword, value))
>                 {
>                         case 0:
>                                 strcpy(config.?, value);
>                                 break;
>                         case -1:
>                                 printf("\nFile Error for [%s] \n", 
> values_file);
>                                 break;
>                         case -2:
>                                 printf("\nBad User Parm for [%s] \n", 
> keyword);
>                                 break;
>                         default:
>                                 printf("\nUnknown Error Occurred \n");
>                                 break;
>                 }
>         }
></snip>
>
>what i'm doing is stepping thru an array of different config options 
>calling the read_config_var on each one and checking the output. if the 
>output is good then i want to store the value in a member of a structure. 
>for example i want the config options to be stored like this:
>
>config.db_host = 'maiden.genestate.com'
>config.db_user = 'root'
>
>you get the idea. my question is how do i dynamically assign a name to a 
>structure member. I have good_values[i] which contains the current config 
>directive but if you look at line 8 of the example, you can see the 
>problem, how do i say config.good_values[i], when good_values[i] is not 
>itself a member.

It would help to understand better if you show us the declaration for the 
"config" structure.

If I understand what you're asking (and I'm not at all sure that I am) I 
think you want to use a C struct like an associative array from TCL or 
(IIUC) Perl.  C does not (directly) support associative arrays.  If you 
want that behavior, you have to code it explicitly.  Structures in C must 
have all the fields of the structure explicitly declared when the structure 
is defined.

>sorry for not being able to explain this very well but you can see what i 
>mean.

I'm not at all sure I understand what you're asking.  If I've guessed 
wrong, try rephrasing the question, or perhaps someone else will understand 
what you mean.

P.S.  Anyone trying to write or maintain C code should have a copy of K&R, 
preferably 2nd Edition [ 
http://www.amazon.com/exec/obidos/tg/detail/-/0131103628 or 
http://tinyurl.com/mziv ] these days.  It's a good tutorial (at least for 
someone experienced with other procedural languages) and a great reference 
manual on C.  Of course, it's a little terse so it takes multiple readings 
(like a love letter) to get the full flavor.

--
Jeff Woods <kazrak+kernel@cesmail.net>  



  reply	other threads:[~2003-09-11 11:50 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-09-11 11:07 named structure members Matthew Harrison
2003-09-11 11:50 ` Jeff Woods [this message]
2003-09-11 14:03 ` Mariano Moreyra
2003-09-11 14:26   ` Matthew Harrison
2003-09-11 14:41     ` Mariano Moreyra
2003-09-11 15:28       ` Matthew Harrison
2003-09-11 15:35         ` Mariano Moreyra
2003-09-11 15:42           ` Matthew Harrison
2003-09-11 15:50     ` Glynn Clements
2003-09-11 16:52       ` Jan-Benedict Glaw
2003-09-11 17:13         ` Matthew Harrison
2003-09-12 13:22           ` Mariano Moreyra
2003-09-12 13:47             ` Matthew Harrison
2003-09-12 13:52               ` Mariano Moreyra
2003-09-12 14:33                 ` Matthew Harrison

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5.2.1.1.0.20030911044032.01ac2a60@no.incoming.mail \
    --to=kazrak+kernel@cesmail.net \
    --cc=linux-c-programming@vger.kernel.org \
    --cc=matth@3d-computers.co.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).