c - Why does the cstdlib strncpy crash whilst copying a char array to a character pointer -
यह मेरा कोड है:
char * toc (char src [STRING_SIZE], char * Dest) {if (src [0] == 0) dest = NULL; अन्य strncpy (dest, & src [0], आकार_टी (strlen (src))); }
इसे कैसे बुलाया जाता है:
typedef struct sdata {char * point_one; } tsdata tsdata sdata; चार नाम [STRING_SIZE] = "point_data"; TOC (नाम, sdata.point_one); strncpy हमेशा क्रैश करता है
मैं क्या कर रहा हूँ गलत?
यह कोड:
typedef struct sdata {char * point_one; } tsdata tsdata sdata; चार नाम [STRING_SIZE] = "point_data"; TOC (नाम, sdata.point_one); कॉल Toc दूसरे तर्क के साथ एक अनिर्धारित संकेतक, जो कि मूल्य से पारित होता है। उस अनिश्चित मूल्य
सामान्य टिप्पणियां।
इस फ़ंक्शन घोषणा में , <पूर्व> शून्य TOC (char src [STRING_SIZE], char * dest) -
STRING_SIZE द्वारा उपेक्षित है संकलक और निम्न कोड के लिए उपलब्ध नहीं है।
और इस कोड स्निपेट में:
if (src [0] == 0) dest = NULL; - असाइनमेंट एक स्थानीय चर (एक फ़ंक्शन तर्क) का मान बदलता है, जिसका उपयोग फ़ंक्शन में नहीं किया जाता है।
< p> इसके अलावा, अपडेट किए गए प्रश्न के लिए जहां फ़ंक्शन घोषणा को char * ToC (char src [STRING_SIZE], char * dest) में बदल दिया गया था - फ़ंक्शन में
return कथन नहीं है, इसलिए फ़ंक्शन परिणाम का कोई भी उपयोग अपरिभाषित व्यवहार है।
Comments
Post a Comment