将数字从文本文件读取到动态分配的2d数组中

时间:2011-10-24 17:16:01

标签: c pointers

首先,我不是要求别人为我做作业,只是为了帮助我坚持下去。 其次,我不是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));
     }
 }

这是我尝试过的其他几种方法。就像我说的那样,我愿意找到一种首先使用[]然后尝试将其转换为指针的方法。如果有人能在那里给我建议,我会更喜欢因为我有点失落。无论哪种方式再次感谢任何帮助!!!

〜乙

1 个答案:

答案 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')`.. */
  }