函数

时间:2016-07-24 21:02:28

标签: c pointers segmentation-fault function-pointers

在您说之前,是的,我已经检查了几乎所有其他帖子,但都没有。

我的程序一直给我一个小时和小时的分段错误,没有任何修复它。我把它调试到了我在文件指针中找到的地步。据我所知,这是因为我在' makeArray'中使用文件指针的方式。函数或文件结束语句。我真的不明白它是如何工作的,因为我使用了我的上一个程序作为参考,并且它运行得非常好但是这个没有。

#include <stdio.h>
#include <stdlib.h>

#define ROWS 12
#define COLS 8

void makeArray(FILE*, int [][COLS]);
int getScore(int [][COLS], int, int);
int getMonthMax(int [][COLS], int);
int getYearMax(int [][COLS]);
float getMonthAvg(int [][COLS], int);
float getYearAvg(int [][COLS]);
int toursMissed(int [][COLS]);
void displayMenu();
int processRequest(int [][COLS], int);
void printArray(int [][COLS]);

int main(){

    int scoresArray[ROWS][COLS];
    int choice, constant = 0;

    FILE* inputPtr;
    inputPtr = fopen("scores.txt", "r");
    makeArray(inputPtr, scoresArray);
    fclose(inputPtr);

    while(constant == 0){
        displayMenu();
        scanf("%d", &choice);
        processRequest(scoresArray, choice);
    }
    return 0;
}

void makeArray(FILE* inputPtr, int scoresArray[][COLS]){
    int i, j;
    for(i = 0; i < ROWS; i++){
        for(j = 0; j < COLS; j++){
            fscanf(inputPtr, "%d", &scoresArray[i][j]);         
        }
    }
    return;
}

我已经尝试将文件指针移动到代码中的每个不同位置而没有。我不一定要你给我答案,但是我想要解释为什么它会在这个具体的代码中发生,因为我检查过的所有其他帖子以及他们的结果都没有匹配我的。

输入文件也是

26 35 25 92 0 6 47 68 26 72 67 33 84 28
22 36 53 66 23 86 36 75 14 62 43 11 42 5
14 58 0 23 30 87 80 81 13 35 94 45 1 53
14 55 46 19 13 0 25 28 66 86 69 0 81 15
55 60 26 70 22 36 15 67 62 16 71 7 29 92
84 37 2 30 7 5 4 50 0 67 2 53 69 87
8 23 74 58 86 0 78 88 85 12 1 52 999 

1 个答案:

答案 0 :(得分:0)

我想知道你的大学编译器是否对输入文件很挑剔 - 你可以从输入文件的副本中删除所有新行并尝试使用复制的修改后的输入文件运行---所以它只是一个数字流 - - 看看这是否排除......

........根据我对scanf和fscanf的体验,如果输入没有按照你在格式部分中所说的那样运行,这些函数可能有点脆弱 - 这里“%d”没有告诉fscanf关于换行符......