[c] एक चार सरणी सी समाशोधन सी


7 Answers

सी में एक सरणी सिर्फ एक स्मृति स्थान है, इसलिए वास्तव में, आपका my_custom_data[0] = '\0'; असाइनमेंट केवल शून्य पर पहला तत्व सेट करता है और अन्य तत्वों को बरकरार रखता है।

यदि आप सरणी के सभी तत्वों को साफ़ करना चाहते हैं, तो आपको प्रत्येक तत्व पर जाना होगा। यही memset है:

memset(&arr[0], 0, sizeof(arr));

यह आमतौर पर इसका ख्याल रखने का सबसे तेज़ तरीका है। यदि आप सी ++ का उपयोग कर सकते हैं, तो इसके बजाय std :: fill पर विचार करें:

char *begin = &arr;
char *end = begin + sizeof(arr);
std::fill(begin, end, 0);
Question

मैंने सोचा कि पहले तत्व को शून्य पर सेट करके एक चार सरणी की संपूर्ण सामग्री को साफ़ कर दिया जाएगा।

char my_custom_data[40] = "Hello!";
my_custom_data[0] = '\0';

हालांकि, यह केवल शून्य के लिए पहला तत्व सेट करता है।

या

my_custom_data[0] = 0; 

memset उपयोग करने के बजाय, मैंने सोचा कि ऊपर दिए गए 2 उदाहरणों को सभी डेटा साफ़ करना चाहिए।




नहीं। आप जो भी कर रहे हैं वह पहला मान '\ 0' या 0 पर सेट कर रहा है।

यदि आप नल टर्मिनेटेड तारों के साथ काम कर रहे हैं, तो पहले उदाहरण में, आपको वह व्यवहार मिलेगा जो आपकी अपेक्षा की नकल करता है, हालांकि स्मृति अभी भी सेट है।

यदि आप मेमसेट का उपयोग किए बिना मेमोरी को साफ़ करना चाहते हैं, तो लूप के लिए उपयोग करें।




पहले चरित्र के लिए एक शून्य चरित्र लिखना बस यही करता है। यदि आप इसे स्ट्रिंग के रूप में देखते हैं, तो शून्य समाप्ति चरित्र का पालन करने वाला कोड इसे शून्य स्ट्रिंग के रूप में मानता है, लेकिन यह डेटा को साफ़ करने जैसा नहीं है। यदि आप वास्तव में डेटा को साफ़ करना चाहते हैं तो आपको मेमसेट का उपयोग करने की आवश्यकता होगी।




उपयोग:

memset(my_custom_data, 0, sizeof(my_custom_data));

या:

memset(my_custom_data, 0, strlen(my_custom_data));



पहले तत्व को न्यूल पर सेट करें। चार सरणी मुद्रित करने से आपको कुछ भी वापस नहीं मिलेगा।




मैं आमतौर पर ऐसा ही करता हूं:

memset(bufferar, '\0', sizeof(bufferar));



निम्नलिखित कोड आज़माएं:

void clean(char *var) {
    int i = 0;
    while(var[i] != '\0') {
        var[i] = '\0';
        i++;
    }
}



निम्नलिखित आज़माएं:

strcpy(my_custom_data,"");



Related



Tags

c   arrays   char