2011-09-27 72 views
1

我一直在做(在C)如何測試char數組是否爲空?

char array[100]; 
if (array == NULL) 
    something; 

這是非常錯誤的(這是我終於學會了,因爲我的程序不能正常工作)。我可以測試一個新的陣列以查看是否已經放入了什麼?

另外,你如何使一個數組變空/清除它?

我知道有關於此主題的其他帖子,但我無法找到一個簡單的答案。

回答

2

數組聲明與

char array[100] 

總是中有100個字符。

通過「清理」,您可能需要爲每個插槽指定一個特定字符,例如字符'\0'。您可以使用循環或多個庫調用中的一個來清除內存或移動內存塊。

看看memset - 它可以很好地「清除」或「重置」你的陣列。

如果您正在使用字符串,使用以零結尾的特殊字符數組,則爲了測試爲空數組,請參閱this SO question。否則,如果您有一個常規字符數組並不是爲了表示文本,請編寫一個循環以確保數組中的所有條目都是您特殊的空白字符,無論您選擇哪種字符。

您也可以聲明你的字符數組,像這樣:

char* array = malloc(100); 

甚至

char* array = NULL; 

但是這是一個有點不同。在這種情況下,數組爲空意味着「沒有數組已被分配」,這與「數組已分配但我還沒有放入任何東西」不同。