[Comm] send pointer on struct to function in C

Alexey Rusakov =?iso-8859-1?q?ktirf_=CE=C1_altlinux=2Eru?=
Пн Мар 14 19:27:09 MSK 2005


On 14.03.2005 17:58, Alexey Morsov wrote:
> Привет,
> 
> Не могу никак понять, как в Си передать в функцию ссылку на массив 
> структур ?
> 
> Пояснение:
> есть структура
> 
> typedef struct {
>   char *name;
>   char *val;
> } Options;
> 
> далее я ее инициализирую
> Options cmd = {
Options cmd[] = ... , вы хотели сказать, я думаю.

>   {"user", "vasya"},
>   {"host", "vasya на com.ru")
А здесь не помешало бы либо добавить , { NULL, NULL }, а в функции 
проверять на NULLовость ну например name, либо передавать в функцию 
отдельным параметром размер массива (в примерах этот параметр не использую).

> }
> 
> Теперь хочу передать своей функции ссылку на структуру cmd и имя 
> параметра "user" а она должна вернуть мне значение этого параметра :)
void fn(Options *o, char **user)
{
   /* ... */
   user = (char *)malloc(/* ... */)
   /* ... */
}

/* ... */
{
   char *user;
   fn(cmd, user);
   /* ... */
   free(user); /* например, а вообще как договоритесь */
}

/*** или ***/

char *fn(Options *o)
{
   return /* ... то что нужно */
}

/* ... */
{
   char *user = fn(cmd);
   /* ... */
   /* опять же, как договоритесь */
}

/*** или ***/

void fn(Options *o, char *user, int user_name_len)
{
   strncpy(user, /* ... */, user_name_len);
}

/* ... */
{
   char user[128];
   fn(cmd, user, 128);
   /* ... */
}

-- 
   Alexey "Ktirf" Rusakov



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