我有一個指向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
你能向我們展示一個有關代碼的例子嗎?就像你如何定義數組,結構以及如何打印數組一樣? –