У меня есть основная проблема, которую я не могу решить для своей жизни. Новичок в С так терпеть меня.
Сначала я создаю массив структур:
struct rule {
int *in; /* ingress flag */
int *out; /* egress flag */
char *actionvalue; /* actionvalue BLOCK or UNBLOCK */
char *proto; /* protocol e.g. UDP TCP ICMP */
char *ip_src; /* source and dest address */
int *srcport; /* src port */
char *net_src; /* source and dest netmask */
char *ip_dst; /* source and dest address */
int *dstport; /* dst port */
char *net_dst; /* source and dest netmask */
} rulelist[10];
Затем я присваиваю им значения
rulelist[policy_count].in = strsep(&temp, delims);
rulelist[policy_count].out = strsep(&temp, delims); etc...
И тогда я могу получить к ним доступ без проблем
printk("%s", rulelist[policy_count].in);
Однако, когда я обращаюсь к массиву массив позже в коде в другой функции ..
printk("%s", rulelist[policy_count].in);
Сбой, как если бы он разыменовывал нулевой указатель.
Я много читал об инициализации, а не о присваивании, но каждый пример отличается, и я не могу понять, что с ним получилось.
Я также не понимаю, как я могу сразу получить к нему доступ, а затем не смогу выполнять другие функции. Структура объявлена глобально, поэтому я не считаю ее проблемой области действия.
Спасибо