Wednesday 15 May 2013

c - Printing a member of an array within a struct within a struct? -


यहां मेरे पास एक स्ट्रेट है:

  typedef struct memo {// गतिशील रूप से आवंटित विशालआइवर सरणी हमारे फाइबोनैचि संख्याओं को संरक्षित करने के लिए संरचना ह्यूजेइन्टेगर * एफ; // इस सरणी int लंबाई की वर्तमान लंबाई (यानी, क्षमता); } मेमो;   

और यह मेमो स्ट्रेट के अंदर स्ट्रक्चर ह्यूज इन्टेगर * है:

  typedef struct HugeInteger {// एक विशाल के अंक को पकड़ने के लिए एक गतिशील आवंटित सरणी पूर्णांक int * अंक; // सरणी की लंबाई (यानी, विशाल पूर्णांक में अंकों की संख्या) तीव्रता लंबाई; } विशाल इन्टेगर;   

मेरा प्रश्न यह है कि मैं मेमो स्ट्रेट के भीतर ह्यूजिनटेगर स्ट्रैट के भीतर अंक सरणी के सदस्य कैसे प्राप्त कर सकता हूं?

मैंने अपने सभी कोडों में इतने सारे तीनों को malloced किया है : <पूर्व> मेमो * नयामैमो = मॉलोक (आकारफ (मेमो)); NewMemo- & gt; एफ = मॉलोक (आकारफ (ह्यूजइंटर) * INIT_MEMO_SIZE); // इस मामले में 44 के लिए (i = 0; i & lt; INIT_MEMO_SIZE; i ++) {newMemo- & gt; एफ [i] .digits = malloc (sizeof (int *) * 1); // नए मैमो का परीक्षण करने के लिए आकार 1 की एक सरणी बनाना-> एफ [i] .digits = NULL; NewMemo- & gt; एफ [i] .length = 0; }

मैंने उदाहरण के लिए कोशिश की है ...

  newMemo-> F [i] .digits [0] = 1;   

... जो सेगमेंटेशन गलती में होता है मैं ऊपर की रेखा के कोड को सही ढंग से कैसे लागू कर सकता हूं? मैं वास्तव में महसूस करता हूं कि मुझे यहाँ कुछ महत्वपूर्ण याद आ रही है। धन्यवाद।

यहां एक समस्या है:

  newMemo-> ; एफ [आई]। डिगेट्स = मॉलोक (साइज़फ (इंटे) * 1); // नए मैमो का परीक्षण करने के लिए आकार 1 की एक सरणी बनाना-> एफ [i] .digits = NULL; (सिंटैक्स त्रुटि के अलावा जो मैंने तय किया था कि मैं एक प्रतिलिपि / पेस्ट त्रुटि थी) ऊपर की दूसरी पंक्ति में स्मृति पते की जगह आपको शून्य के साथ आवंटित किया गया था। ताकि जब आप ऐसा करेंगे:  
  newMemo-> F [i] .digits [0] = 1;   

आप एक नल पते पर लिख रहे हैं।

आप शून्य असाइनमेंट को छोड़ना चाहते हैं।

No comments:

Post a Comment