ALT Linux Community general discussions
 help / color / mirror / Atom feed
From: "Alexandr R. Ogurtzoff" <aogurtsov@hostopia.com>
To: community@altlinux.ru
Subject: Re: [Comm] send pointer on struct to function in C
Date: Mon, 14 Mar 2005 23:00:30 +0200
Message-ID: <200503142300.31398.aogurtsov@hostopia.com> (raw)
In-Reply-To: <4235C282.5000701@ricom.ru>


> инициализация
> Options cmd[] = {
>     {"squidlog", "access.log"},      // path to squid access.log file
>     {"config", "trafficd.conf"} ,  // path to trafficd conf file
       {NULL,NULL}  //Раз уж в коде проверяете
> };
>
>
> функция
>
> char *OptionGetVal(Options *opt, char *name) {
>     int i=0;
>     while (opt[i].name != NULL ) {
>        if (!strcmp(name,opt[i].name))
           return(char *)(opt[i].val);
Тип бы надо всё таки привести раз функция так описана
>        i++;
>     }
>     return NULL;
> }
>
> вызов ее такой
>
> printf("squidlog=%s\n", OptionGetVal(cmd,"squidlog"));
>
 Ну а вообще на мой взгляд было бы кошернее
static Options cmd[] = {
     {"squidlog", "access.log"},      // path to squid access.log file
     {"config", "trafficd.conf"} ,  // path to trafficd conf file
 };

// на момент компиляции размер масива cmd уже известен
// Посчитаем число элементов
#define MAX_INDEX = (sizeof(cmd)/sizeof(struct Options));

struct  Options *OptionGetVal(Options *opt, char *name) {
    int i=0;
    while ( i < MAX_INDEX  ){
       if (!strcmp(name,opt[i].name))
          return(opt[i]);
       i++;
    }
    return NULL;
}
И соответвено:
 printf("squidlog=%s\n", (char *)OptionGetVal(cmd,"squidlog")->val);
-- 
Best regards
Alexandr R. Ogurtzoff
{
UNIX is user friendly, it's just picky about who its friends are
}


  reply	other threads:[~2005-03-14 21:00 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-03-14 14:58 Alexey Morsov
2005-03-14 16:01 ` Alexandr R. Ogurtzoff
2005-03-14 16:46   ` Alexey Morsov
2005-03-14 16:50   ` Alexey Morsov
2005-03-14 16:51   ` Alexandr R. Ogurtzoff
2005-03-14 17:00     ` Alexey Morsov
2005-03-14 16:27 ` Alexey Rusakov
2005-03-14 16:57   ` Alexey Morsov
2005-03-14 21:00     ` Alexandr R. Ogurtzoff [this message]
2005-03-14 21:11     ` Alexey Rusakov
2005-03-15  8:01       ` Alexey Morsov
2005-03-15  8:20         ` Denis S. Filimonov
2005-03-15  8:38           ` Alexey Morsov
2005-03-15 11:01             ` Alexey Rusakov
2005-03-15 11:34               ` Alexey Morsov
2005-03-15 11:50                 ` Alexey Rusakov
2005-03-15  8:20         ` Michael Holzman
2005-03-14 21:23     ` Alexandr R. Ogurtzoff

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=200503142300.31398.aogurtsov@hostopia.com \
    --to=aogurtsov@hostopia.com \
    --cc=community@altlinux.ru \
    /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

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git