二叉树程序中的分段错误

时间:2014-09-23 18:54:03

标签: c

我正在尝试实现二叉树来接受文件中的字符串。当我运行我的主文件时,我得到一个分段错误。我运行了gdb,它告诉我问题出在我的while循环中。我似乎无法弄明白为什么。

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

int main(int argc, char *argv[]) {
    struct TreeNode *root = 0;
    char string[20] = {0};
    int ch = 0;
    int i = 0;
    FILE *inFile = fopen(argv[1], "r");

    while(!feof(inFile)) {
        do {
            ch = fgetc(inFile);
            if(isalpha(ch)) {
                string[i] = ch;
            }
            i++;
        } while(isspace(ch));
        i = 0;
        insert(string, root);
    }

    fclose(inFile);
    displayTree(root);
    destroyTree(root);

    FILE *outFile = fopen(argv[2], "w");
    fclose(outFile);

    return 0;
}

1 个答案:

答案 0 :(得分:1)

除了while(isspace(ch));可能被while(!isspace(ch));替换的问题之外,您需要在字符串末尾添加空字符,然后再将其发送到insert()函数和此函数还应该为根变量返回一个新值:

string[i]= 0;
i=0;
root=insert(string,root);

你还应该确保i的值不高于19,以免超出字符串缓冲区的长度。