2012-12-13 49 views
7

空數組我在C以下代碼:如何檢查是否使用C

int i = 0; 
char delims[] = " \n"; 
char *result = NULL; 
char * results[10]; 
result = strtok(cmdStr, delims); 
while(result != NULL) 
{ 
    results[i] = result; 
    i++; 
    result = strtok(NULL, " \n"); 
} 

if(!results[1]) 
{ 
    printf("Please insert the second parameter...\n"); 
} 
else 
{ 
    ... 
} 

它始終執行即使results[1]是空的else條件。我試過results[1] == NULL但沒有成功。

我該如何檢查它是否爲空?

+0

具體實施方式,以檢查是否一個字符數組爲空(http://stackoverflow.com/questions/1793867/best檢查字符數組是否爲空) – ljedrz

回答

9

初始化results陣列所以所有元素都是NULL

char* results[10] = { NULL }; 

在張貼代碼元素被未初始化,將被保持的隨機值。

此外,防止超出results數組的範圍:

while (i < 10 && result) 
{ 
} 
5

有作爲一個「空數組」或C.「空元素」沒有這樣的事情的陣列總是保持固定的預確定數量的元素和每個元素始終保持一定的價值。

引入「空」元素的概念的唯一方法是自己實現它。您必須決定將哪些元素值作爲保留用作「空值」。然後你必須用這個值初始化你的數組元素。稍後,您將比較這些「空」價值的要素,看它們是否......好,爲空。

在你的情況下,有問題的數組由指針組成。在這種情況下,選擇空指針值作爲指定「空」元素的保留值是明顯不錯的選擇。聲明你的結果陣列

char * results[10] = { 0 }; // or `= { NULL };` 

一個後檢查元件

if (results[i] == NULL) // or `if (!results[i])` 
    /* Empty element */ 
+0

感謝您的解釋。這工作正常。 – user1893187

+0

如果我們不初始化它,我們可以檢查數組是否爲空? 'int arr [10];'。 – dud3