Скажем, у вас есть структура, определенная так:
typedef struct bar_s
{
char data[128];
int someInt;
} bar_t;
Вы бы определили свою функцию следующим образом:
void foo(bar_t* p) //Note the asterisk
{
strcpy(p->data, "Hello!"); //copy a string into data field
p->someInt = 0; //assign value to someInt field. Note the "->"
(*p).someInt = 0; //Same as above, using a dereference operator.
}
Теперь, как вы передаете указатель на эту функцию? Вы могли бы сделать что-то вроде этого:
bar_t sample;
foo(&sample); // & = address-of operator.
Ваша функция readSet нуждается в небольшом количестве работы, чтобы она стала функциональной, но это как работать с указателями в C. В вашем случае вы бы сделали что-то вроде этого:
void readSet(set* rset)
{
int i = 0;
for(i = 0; i < 127; ++i)
{
rset->a[i] = '0';
}
//Note that all strings in C must be terminated with a null character.
//So, let's put one at the last place in the array.
rset->a[127] = '\0';
...
}