我有一个指向struct的指针数组,并且出于任何原因,当我打印此数组时,其末尾有一个备用元素,从而导致代码在最后打印一个NULL字节。如何在C中将结构指针设置为NULL?
反正我有可以删除最后的存储块?
例如:
typedef struct
{
char *name;
} B;
typedef struct
{
B *var;
} A;
int main() {
int num = 5; //for example
A *foo = malloc(sizeof(A));
B *bar = malloc(num * sizeof(B));
for (int i = 0; i < num; i++) {
bar[i] = *create_b(&bar[i]); // some function that works.
}
foo->var = bar;
while (foo->var != NULL) {
printf("This is %s\n",foo->var->name);
foo->var++;
}
}
一切都被打印出来就好了,但有在循环结束不必要的打印。例如:
This is A
This is B
This is C
This is D
This is F
This is
显然该数组只有5个元素,最后一个不打印任何东西。
检查数组是否为null,如果它是char数组作为struct的成员。它不应该打印它。除非您向我们展示代码实际上正在尝试,否则很难弄清楚。 – Mahesh
你初始化了数组中的数据吗? – ziu
你能向我们展示一个有关代码的例子吗?就像你如何定义数组,结构以及如何打印数组一样? –