एक पाठ फ़ाइल से स्ट्रिंग पढ़ना एक द्विआधारी खोज वृक्ष के निर्माण के लिए

वोट
-1

यहाँ मेरी कोड अब तक है

#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>

#define lineSize 256

struct recordNode {
   char district[256];
   int employees;
   int employers;
   int students;
   int retried;
   int others;
   struct recordNode* left;
   struct recordNode* right;
};

struct stockNode* addRecord(struct recordNode* tree, struct recordNode node) {
   struct recordNode* newnode;
   struct recordNode* searcher;

   /* allocate memory block and assign parameter values to it */
   newnode = (struct recordNode*)malloc(sizeof(struct recordNode));

   newnode->left = NULL;
   newnode->right = NULL;
   /* check if the tree is empty, and in such case, return the newnode as*/
   /* the first node of the tree */
   if (tree == NULL)
     return newnode;
   /* searcher is the pointer to search for the correct location for insertion */
     searcher = tree;
   while (1) {
   /* see if the newnode should go to left branch */
      //if (code < searcher->code) {
      if (strcmp(tree->district, node.district) < 0) {
      /* yes, and if the left branch is empty, this is the insertion location */
         if (searcher->left == NULL) {
            searcher->left = newnode;
            return tree;
         }
      else { /* not yet, keep moving to the next level down */
         searcher = searcher->left;
         continue;
      }
   }
   /* see if the newnode should go to right branch */
      if (strcmp(tree->district, node.district) > 0) {
   /* yes, and if the right branch is empty, this is the insertion location */
         if (searcher->right == NULL) {
            searcher->right = newnode;
            return tree;
         }
      else { /* not yet, keep moving to the next level down */
        searcher = searcher->right;
        continue;
      }
   }
   else {
      free(newnode);
      return NULL; /* an error indication */
   }
   }
}

void getFile () {
   struct recordNode node;
   struct recordNode *tree;

   FILE* fpin;
   FILE* fpout;

   char line_buffer[lineSize]; /* BUFSIZ is defined if you include stdio.h */
   int counter = 0;

   //file validation
   fpin=fopen(testData.txt, r);

   if (fpin == NULL ) exit(0);
        counter = 0;
    while (fgets(line_buffer, sizeof(line_buffer), fpin)) { 
               counter++;
               if (counter != 1) {
               sscanf(line_buffer, %[^','],%d,%d,%d,%d, node.district, &node.employees, &node.students, &node.retried, &node.others);
               tree = addRecord(tree, node); **//ERROR**

               }

    }
        getchar();

}

void main() {

   getFile();
   getchar();

}

निम्न पंक्ति:

tree = addRecord(tree, node);

इस त्रुटि देता है:

// त्रुटि परियोजना Project2.exe पता 32657E39 पर संदेश 'पहुँच उल्लंघन के साथ अपवाद वर्ग EAccessViolation उठाया। 'पता 00000001 के पढ़ें। प्रक्रिया बंद कर दिया। चरण का प्रयोग करें या जारी रखने के लिए भागो

मैं इस समस्या को कैसे हल कर सकता हूं?

08/06/2011 को 06:20
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
1

जब आप पहली बार इसे बनाने के शून्य करने के लिए * पेड़ सूचक आवंटित करने के लिए सुनिश्चित करें। अन्यथा यह किसी भी मूल्य हो सकता है।

 void getFile () {
       struct recordNode node;
       struct recordNode *tree=NULL;
       ...
08/06/2011 को 06:49
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more