首先,我并不是要别人帮我做功课,只是为了帮助我解决我遇到的问题。 其次,我不是 C 专家,所以请原谅任何不符合标准的做法。 第三,提前感谢您的帮助 =)
好的...
我得到了这样一个文本文件:
4 6
010000
011010
011010
101100
前两位数字是行数和列数。
我应该将其读入动态分配的二维数组,以便我可以操作数组中的特定数字。
我已经将 4 和 6 存储到变量中,没有问题,并且正确地创建了数组并分配了空间。我似乎无法弄清楚如何将所有 0 和 1 放入数组中。我一直在四处寻找一段时间,但没有任何运气。
我也不允许在我的程序中的任何地方使用 []
,我们专注于指针,所以它必须全部用指针来完成。但是,如果我可以使用 []
符号获得一个可行的解决方案,我可以稍后尝试将其设为所有指针,但现在我无法通过任何一种方式正常工作。
这是我正在编写的接收已打开文件的函数:
void image(FILE *fp){
int row =0, col=0, i=0, j=0;
int **image;
fscanf(fp, "%d %d", &row, &col);
image = (int**) malloc(row*sizeof(int*));
for (i = 0; i < row; i++){
*(image+i) = (int*) malloc(col*sizeof(int));
for(j=0; j< col; j++){
//TRIED THIS BUT IT DOESNT WORK
fscanf(fp, "%d", &image[i][j]);
}
printf("%d\n", **(image+i));
}
}
这是我尝试过的其他几种方法中的一种。就像我说的,我愿意找到一种首先使用 []
的方法,然后尝试将其转换为指针。我希望有人能给我建议,因为我有点迷路。无论哪种方式,再次感谢您的帮助!!!
~B.
最佳答案
尝试:
for(j = 0; j < col; j++) {
if (!fscanf(fp, " %c", &image[i][j])) /* Also note the space */
break;
image[i][j] -= '0'; /* Or you can go `if (image[i][j] == '0')`.. */
}
关于c - 将文本文件中的数字读入动态分配的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7879285/