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>
next prev parent 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).