繁体   English   中英

程序接收信号sigsegv分割错误

[英]program received signal sigsegv segmentation fault

我用不同的编译器编写了一个程序。 我不能在大学上运行它。 程序读取了一个名为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);
}

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);
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM