char arrays वाले दो structs की प्रतिलिपि बनाने का मानक तरीका क्या है?सी में दो structs कॉपी करें जिसमें चार पॉइंटर्स
#include stdio.h>
#include string.h>
#include stdlib.h>
typedef struct {
char* name;
char* surname;
} person;
int main(void){
person p1;
person p2;
p1.name = (char*)malloc(5);
p1.surname = (char*)malloc(5);
strcpy(p1.name, "AAAA");
strcpy(p1.surname, "BBBB");
memcpy(&p2, &p1, sizeof(person));
free(p1.name);
printf("%s\n", p2.name);
return 0;
}
लाइन printf("%s\n", p2.name);
, कुछ प्रिंट नहीं करता क्योंकि मैं बफर मुक्त कर दिया:
यहाँ कुछ कोड है।
मेरे structs के साथ समस्या यह है कि वे संरचना person
से बड़ी हैं। उनमें सैकड़ों चार पॉइंटर्स होते हैं, और मुझे प्रत्येक सदस्य को एक-एक करके कॉपी करना होता है।
क्या दो सूत्रों की प्रतिलिपि बनाने का कोई और तरीका है जिसमें प्रत्येक सदस्य के लिए malloc
और strcpy
का उपयोग किए बिना चार सरणी शामिल हैं?
memcpy कैसे काम करता है, अगर स्मृति को पी 2 के लिए आवंटित नहीं किया गया है, तो क्या कोई समझा सकता है? क्या इसे रन टाइम पर कुछ अपवाद नहीं फेंकना चाहिए? – JagsVG
आपकी संरचनाओं में * पॉइंटर्स *, नहीं * सरणी * शामिल हैं। आपके पॉइंटर्स में char की सरणी का पता हो सकता है, लेकिन क्या आप उस सरणी की प्रतिलिपि बनाना चाहते हैं, आपको इसे स्पष्ट रूप से प्रबंधित करना होगा। –