From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-POP-User: vdotsenko.hostopia.com From: "Alexandr R. Ogurtzoff" Organization: Hostopia To: community@altlinux.ru Subject: Re: [Comm] send pointer on struct to function in C Date: Mon, 14 Mar 2005 23:00:30 +0200 User-Agent: KMail/1.7.2 References: <4235A6A7.9020801@ricom.ru> <4235BB5D.7020109@altlinux.ru> <4235C282.5000701@ricom.ru> In-Reply-To: <4235C282.5000701@ricom.ru> MIME-Version: 1.0 Content-Type: text/plain; charset="koi8-r" Content-Transfer-Encoding: 8bit Content-Disposition: inline Message-Id: <200503142300.31398.aogurtsov@hostopia.com> X-BeenThere: community@altlinux.ru X-Mailman-Version: 2.1.5 Precedence: list Reply-To: community@altlinux.ru List-Id: Mailing list for ALT Linux users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Mar 2005 21:00:40 -0000 Archived-At: List-Archive: List-Post: > инициализация > 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 }