[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