首先,我不是要求别人为我做作业,只是为了帮助我坚持下去。 其次,我不是C专家所以请原谅任何非标准做法。 第三,提前感谢任何帮助=)
好的...
我得到一个这样的文本文件:
4 6
010000
011010
011010
101100
前两位是行数和列数。
我应该把它读成一个动态分配的2d数组,这样我就可以操作数组中的特定数字了。
我有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));
}
}
这是我尝试过的其他几种方法。就像我说的那样,我愿意找到一种首先使用[]
然后尝试将其转换为指针的方法。如果有人能在那里给我建议,我会更喜欢因为我有点失落。无论哪种方式再次感谢任何帮助!!!
〜乙
答案 0 :(得分:1)
尝试:
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')`.. */
}