मैं एक वेक्टर (स्कूल से व्यायाम) की छवि बनाने की कोशिश कर रहा हूं, इसलिए मैं हेडर का उपयोग कर रहा हूं। दो फाइलें और एक funtion है।

पहले मैंने एक वेक्टर बनाया

Vector vector;
GLOBAL_ERROR_CODE = initVector(&vector,3);
if(GLOBAL_ERROR_CODE>0) return printGlobalError();                                          
printf("Vector inited\n"); 

बाद में इसे प्रिंट करने की कोशिश की जा रही है

char * vectorPhotography;
GLOBAL_ERROR_CODE = seeVector( &vector, vectorPhotography );
if(GLOBAL_ERROR_CODE>0) return printGlobalError();                                           

तो देखें वेक्टर फंक्शन यह यह है

int seeVector(Vector * vector, char * vectorPhotography){
     char * vectorStrSize = (char *) malloc(sizeof(char));
     int ErrorCode = integerToString(vector->size, vectorStrSize);
     if(ErrorCode>0) return ErrorCode;
     char * arrayPhotography = (char *) malloc(sizeof(char));
     if(ErrorCode>0) return ErrorCode;
     ErrorCode = seeArray(vector->array, arrayPhotography, vector->size);
     if(ErrorCode>0) return ErrorCode;
     if(vectorPhotography) free(vectorPhotography);
     vectorPhotography = (char *) malloc(sizeof("{\nSize:,\nArray:,\n}") + sizeof(arrayPhotography) + sizeof(vectorStrSize));
     if(vectorArray == NULL) return RESERVE_MEMORY_FAIL;
     strcat(vectorPhotography, "{\nSize:");
     strcat(vectorPhotography, vectorStrSize);
     strcat(vectorPhotography, ",\nArray:");
     strcat(vectorPhotography, arrayPhotography);
     strcat(vectorPhotography, ",\n}");
     return 0; 
}

तो यहाँ बात है, एल्गोरिदम के बाद देखेंवेक्टर फ़ंक्शन के अंदर वेक्टरफोटोग्राफी का मूल्य यह है

(gdb) print vectorPhotography 
$3 = 0x5555557576f0 "{\nSize:\003,\nArray:[][][],\n}"

लेकिन जब मैं मुख्य समारोह में लौटता हूं तो मान न्यूल होता है

(gdb) print vectorPhotography
$4 = 0x0

दौड़ने पर मुझे यह मिलता है

Vector inited
Vector:(null)

तो मेरा डेटा खो गया है, मुझे नहीं पता कि जिस वेक्टर पर मैं काम कर रहा हूं उसे वापस कैसे पास किया जाए, (मुझे त्रुटि कोड के लिए वापसी की आवश्यकता है)

3
Zush 18 7 अप्रैल 2020, 18:05

1 उत्तर

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

आपको क्या करना चाहिए चार सरणी vectorPhotography का संदर्भ पास करें ताकि आप फ़ंक्शन कॉल के बाद अपडेट किए गए मान तक पहुंच सकें। इसमें आपके फ़ंक्शन हस्ताक्षर को int seeVector(Vector * vector, char ** vectorPhotography) में बदलना, आपके फ़ंक्शन कॉल को seeVector( &vector, &vectorPhotography ) में बदलना और फिर अपने फ़ंक्शन के अंदर vectorPhotography के अपने उपयोग को *vectorPhotography में बदलना शामिल है ताकि आप मान बदल सकें स्थानीय पैरामीटर द्वारा इंगित किया गया

1
awarrier99 7 अप्रैल 2020, 15:12