तो मैं सी में संरचनाओं के बारे में जानने की कोशिश कर रहा हूं और संरचना में 2 डी वर्ण सरणी रखने की कोशिश कर रहा हूं। जब मैं इसे मुख्य रूप से प्रारंभ करने का प्रयास करता हूं, तो मुझे "त्रुटि: अपेक्षित अभिव्यक्ति" कहने में त्रुटि मिलती है।

struct students
{
    char roll_no[9][2];
}st;
int main()
{
    st.roll_no={"21BCD7001","21BCD7002"}; //this is where I get the error
}

जब मैं इसे संकलित करने का प्रयास करता हूं, तो मुझे मुख्य () में पहले '{' में त्रुटि मिलती है। तो मैं इस त्रुटि को कैसे हटा सकता हूं?

0
Ppp 8 जिंदा 2021, 10:41
मुझे अभी भी ऐसा करने में वही त्रुटि मिलती है
 – 
Ppp
8 जिंदा 2021, 10:45

1 उत्तर

सबसे बढ़िया उत्तर

char roll_no[9][2]; का अर्थ है "मुझे 9 सरणियाँ दें, प्रत्येक 2 वर्ण लंबे"। लेकिन आप वास्तव में 2 सरणी चाहते हैं, प्रत्येक 10 वर्ण लंबा। डेटा के लिए 9 बाइट और नल टर्मिनेटर के लिए 1 बाइट। अर्थात्:

char roll_no [2][10];

साथ ही, st.roll_no={"21BCD7001","21BCD7002"}; असाइनमेंट है न कि इनिशियलाइज़ेशन। आप सी में सरणी असाइन नहीं कर सकते हैं, आपको इस मामले में strcpy का उपयोग करना होगा। वास्तव में संरचना को प्रारंभ करने के लिए, आपको यह करना होगा:

struct students
{
    char roll_no[2][10];
};

int main()
{
  struct students st = {"21BCD7001","21BCD7002"}; 
}

या आप कार्यात्मक रूप से समकक्ष लेकिन अधिक सुंदर शैली का उपयोग कर सकते हैं:

struct students st = 
{ 
  .roll_no = {"21BCD7001","21BCD7002"} 
};
1
Lundin 8 जिंदा 2021, 10:55
ठीक है धन्यवाद कि काम किया। इसके अलावा क्या होगा यदि मेरे पास मेरी संरचना में इस तरह के दो 2 डी सरणी हैं?
 – 
Ppp
8 जिंदा 2021, 10:57
मेरे द्वारा अभी पोस्ट की गई सुंदर शैली के साथ जाना बेहतर होगा: struct students st = { .first_array = { ... }, .second_array = { ... }, };
 – 
Lundin
8 जिंदा 2021, 11:00