当前位置:  开发笔记 > Android > 正文

C fscanf分段错误错误"无源可用"flockfile()位于0x7fff855e6d39"

如何解决《Cfscanf分段错误错误"无源可用"flockfile()位于0x7fff855e6d39"》经验,为你挑选了1个好方法。

我正在处理来自USACO的旧编码问题.这是我的代码的前几行,其中我试图使用该fscanf()函数intblocks.in文件中获取第一个值a :

#include 
#include 
int main() {
     FILE *fin  = fopen ("blocks.in", "r");
     FILE *fout = fopen ("blocks.out", "w");
     int i,j;
     int linecount = 0;
     int alphabetCount[26];
     fscanf(fin," %d",&linecount);

运行gdb(作为Eclipse C/C++ IDE的一部分),我一直在线上遇到分段错误错误:

fscanf(fin," %d",&linecount);

该错误始终如下:

没有可用于"flockfile()的源代码,位于0x7fff855e6d39"

我无法找到问题所在.我过去没有遇到任何问题.您是否看到了什么问题,或者有更好的解决方案/功能来提取数据?



1> ex nihilo..:

我怀疑blocks.in你运行程序的目录中没有文件.即使文件存在,也可能无法成功打开.一些简单的错误检查可以帮助您避免问题:

#include 
#include 

int main(void) {
    FILE *fin;
    FILE *fout;
    int i,j;
    int linecount = 0;
    int alphabetCount[26];

    if ((fin = fopen("blocks.in", "r")) == NULL) {
        fprintf(stderr, "Unable to open input file\n");
        exit(EXIT_FAILURE);
    }
    if ((fout = fopen("blocks.out", "w")) == NULL) {
        fprintf(stderr, "Unable to open output file\n");
        exit(EXIT_FAILURE);
    }     

    fscanf(fin," %d",&linecount);

    return 0;
}


我添加了错误检查,结果是文件没有正确打开.我重写了blocks.in文件,看起来工作正常.谢谢您的帮助!
推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有