fclose上的段错误?

时间:2015-02-11 02:21:38

标签: c file-io io scanf

我试图读取一个整数文件,其中包含文件中整数的数量作为第一个整数,但是当我在阅读后尝试关闭文件时,我得到了一个seg故障。

我已经读过,如果文件指针为空并且您尝试将其关闭,则会出现故障。但是,我在关闭它之前检查它是否为空,它不为空,它仍然给我一个段错误。

我通过GDB运行它,一旦fclose(fp)执行,就会出现故障。

发生了什么?

这是我的代码:

            char *mode = "r";
            int numsToRead = 0;
            FILE *fp = fopen(inputFile, mode);

            if (fp == NULL){
                    fprintf(stderr, "Can't open input file!\n");
                    exit(1);
            }

            int *temp;
            int index = 0;
            // Get number of integers (first integer)
            fscanf(fp, "%d", &numsToRead);
            fprintf(stdout, "nums to read: %d\n", numsToRead);

            integers = (int*)malloc(sizeof(int) * numsToRead);
            for(int i = 0; i <= numsToRead; i++){
                    int currInt;
                    if(fscanf(fp, "%d", &currInt) == 1)
                            integers[i] = currInt;
                    else
                            break;
            }
            if(fp != NULL)
            fclose(fp);

1 个答案:

答案 0 :(得分:1)

for(int i = 0; i <= numsToRead; i++)
//               ^^

应该是

for(int i = 0; i < numsToRead; i++)
//               ^