fscanf和2d整数数组

时间:2015-04-10 03:32:33

标签: c arrays 2d

免责声明:我是一个苦苦挣扎的初学者

我的任务是将输入txt文件中的整数读入2D数组。当我使用printf来调试/测试我的fscanf时没有从文件中读取正确的值。我无法弄清楚原因。

我的代码如下:

void makeArray(int scores[][COLS], FILE *ifp){
    int i=0, j=0, num, numrows = 7, numcols = 14;

    for(i = 0; i < numrows; ++i){
        for(j = 0; j < numcols; ++j){
            fscanf(ifp, "%d", &num);
            num = scores[i][j];
        }
    }
}

int main(){
    int scoreArray[ROWS][COLS];
    int i=0, j=0;
    FILE *ifp;
    ifp = fopen("scores.txt", "r");

    makeArray(scoreArray, ifp);

    system("pause");
    return 0;   
}

1 个答案:

答案 0 :(得分:2)

您正在将num(您从文件中读取的内容)分配到向后执行此操作的数组scores[i][j]的值中。以下代码将读取每个数字之间的任意数量的空格,直到它到达文件的末尾。

void makeArray(int scores[][COLS], FILE *ifp) {
    int i=0, j=0, num, numrows = 7, numcols = 14, ch;

    for (i=0; i < numrows; ++i) {
        for (j=0; j < numcols; ++j) {
            while (((ch = getc(ifp)) != EOF) && (ch == ' ')) // eat all spaces
            if (ch == EOF) break;                            // end of file -> break
            ungetc(ch, ifp);
            if (fscanf("%d", &num) != 1) break;
            scores[i][j] = num;                              // store the number
        }
    }
}

This Stack Overflow帖子更详细地介绍了这个问题。