Вот мой код
#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);
выдает эту ошибку:
// ОШИБКА Project Project2.exe поднял класс исключения EAccessViolation с сообщением
Нарушение доступа по адресу 32657E39.
Чтение адреса 00000001 '. Процесс остановлен. Используйте Step или Run, чтобы
продолжение
Как я могу исправить эту проблему?