2011-02-23 99 views
0

我有一個雙昏。 array:如何將memset用於二維數組?

alarm_1_active_buffer[MAX_NUM_ALARMS][MAX_ALARM_STRING_SIZE]; 

我想在填充之前清除緩衝區。
像這樣:

for(index=0; index<MAX_NUM_ALARMS ; index++) 
    { 
     memset(&alarm_1_active_buffer[index], 0, MAX_ALARM_STRING_SIZE); 
     memset(&alarm_1_active_buffer[index],string, MAX_ALARM_STRING_SIZE); 
    } 

這是行不通的。

回答

1

由於數組放置在連續的地址空間中,因此不必爲2d數組做任何特殊操作。您可以簡單地使用memset(alarm_1_active_buffer, 0, MAX_NUM_ALARMS * MAX_ALARM_STRING_SIZE * sizeof(type of alarm_1_active_buffer));

+0

它會清除整個數組...我只想清除第i個索引.. – mujahid 2011-02-23 09:52:40

+0

嗯..''alarm_1_active_buffer [index] = 0' – Asha 2011-02-23 10:01:23

+0

您可以立即清除整個數組 - t需要遍歷外部數組並清除每個索引。 – 2011-02-23 11:05:21

1

並確保#include <string.h>第一:

memset(alarm_1_active_buffer, 0, sizeof(alarm_1_active_buffer)); 

此方法不論數組中元素的類型。