[Comm] send pointer on struct to function in C

Alexandr R. Ogurtzoff =?iso-8859-1?q?aogurtsov_=CE=C1_hostopia=2Ecom?=
Вт Мар 15 00:00:30 MSK 2005


> инициализация
> 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
}



Подробная информация о списке рассылки community