C fscanf 分段错误"没有可用于"0x7fff855e6d39 的 flockfile() "的源



我目前正在处理C中USACO的一个旧编码问题。以下是我代码的前几行,其中我试图使用fscanf()函数从blocks.in文件中获取第一个值int

#include <stdio.h>
#include <stdlib.h>
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()at 0x7fff855e6d39"的源

我无法找到问题的来源。我过去对此没有任何问题。您是否发现了问题,或者有更好的解决方案/功能来提取数据?

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

#include <stdio.h>
#include <stdlib.h>
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 filen");
exit(EXIT_FAILURE);
}
if ((fout = fopen("blocks.out", "w")) == NULL) {
fprintf(stderr, "Unable to open output filen");
exit(EXIT_FAILURE);
}     
fscanf(fin," %d",&linecount);
return 0;
}

相关内容

  • 没有找到相关文章

最新更新