2012-12-13 10 views
7

में खाली सरणी मैं है सी में निम्न कोड की जाँच करने के:कैसे करता है, तो सी

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 
{ 
    ... 
} 

यह हमेशा else हालत भले ही results[1] खाली है निष्पादित करता है।

मैंने results[1] == NULL के साथ प्रयास किया है लेकिन कोई सफलता नहीं है।

मैं कैसे जांच सकता हूं कि यह खाली है या नहीं?

+0

तत्वों की जांच अपने परिणामों सरणी घोषित (http://stackoverflow.com/questions/1793867/best -वे-टू-चेक-if-a-character-array-is-खाली) – ljedrz

उत्तर

9

प्रारंभ results सरणी तो सभी तत्वों NULL हैं:

char* results[10] = { NULL }; 

पोस्ट कोड तत्वों unitialized कर रहे हैं और यादृच्छिक मान लेंगे।

साथ ही, results सरणी की सीमा से परे जा रहा रोकने:

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

एक "खाली सरणी" या "खाली तत्व" सी में जैसी कोई चीज नहीं है सरणी हमेशा एक निश्चित पूर्व रखती है तत्वों की निर्धारित संख्या और प्रत्येक तत्व में हमेशा कुछ मूल्य होता है।

"खाली" तत्व की अवधारणा को पेश करने का एकमात्र तरीका यह है कि इसे स्वयं लागू करें। आपको यह तय करना होगा कि कौन सा तत्व मान आरक्षित "खाली मूल्य" के रूप में उपयोग किया जाएगा। फिर आपको इस मूल्य के साथ अपने सरणी तत्वों को प्रारंभ करना होगा। बाद में आप यह देखने के लिए तत्वों की तुलना "खाली" मान से करेंगे कि वे ... ठीक है, खाली हैं।

आपके मामले में प्रश्न में सरणी पॉइंटर्स से मिलती है। इस मामले में शून्य सूचक मूल्य का चयन करना एक "खाली" तत्व को नामित आरक्षित मूल्य के रूप में एक स्पष्ट अच्छी पसंद है। के रूप में

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

एक बाद में [जाँच करने के लिए सबसे अच्छा तरीका है अगर एक चरित्र सरणी रिक्त है] के रूप में

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

स्पष्टीकरण के लिए धन्यवाद। यह ठीक काम करता है। – user1893187

+0

अगर हम इसे प्रारंभ नहीं करते हैं तो क्या हम जांच सकते हैं कि सरणी खाली है या नहीं? 'int arr [10];'। – dud3

संबंधित मुद्दे