我的任务是将输入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;
}
答案 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帖子更详细地介绍了这个问题。