[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