c - 将文本文件中的数字读入动态分配的二维数组

标签 c pointers

首先,我并不是要别人帮我做功课,只是为了帮助我解决我遇到的问题。 其次,我不是 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/

相关文章:

c++ - 指针作为函数参数的引用

在 C 函数中将二进制转换为 ASCII 以及从 ASCII 转换为字母?

c++ - 使用 OpenGL 渲染 VAAPI 表面?

C分配指针?这是什么?

c - 这两个指针别名如何?

c++ - 指针和指针的地址如何共享相同的内存地址?

c - C 中的指针和数组

c - 如何用scanf()读取一句char指针?

c - 查找子字符串 s2 在 s1 中的位置的函数

C++ 有人知道更多关于这种指针的信息吗?