程序接收信号sigsegv分段故障

时间:2014-04-26 15:31:43

标签: c sigsegv

我用不同的编译器制作了一个程序。我不能在大学里运行它。程序读取一个名为board.txt的文本文件,它计算不同的单词等

这是要下载的项目:  https://mega.co.nz/#!CN11xS6Q!w549XDt4T7huRyTjv3J-b3a8vcsbbMrzEGIb2X4RRSM

以下是代码的一部分:

void countwords(FILE *board){
    int word=0;
    char *a;

    printf("\ncounting words...\n");
    rewind(board);
    while(!feof(board)){
        *a=fgetc(board);
        if(*a==' ')
            word++;
    }
    printf("%d",word+1);
}

1 个答案:

答案 0 :(得分:0)

a是一个指针,你永远不会初始化它。实际上,它指向内存中的一些随机位置;而你正在写那个记忆位置!只是运气不好,它没有在你自己的电脑上崩溃。

指针变量本身没用;

,你只能一次阅读和处理一个字符,所以一个简单的char变量就足够了。

void countwords(FILE *board){
    int word=0;
    char c;

    printf("\ncounting words...\n");
    rewind(board);
    while(!feof(board)){
        c=fgetc(board);
        if(c==' ')
            word++;
    }
    printf("%d",word+1);
}

在其他功能中进行相同的调整。

相关问题