试图通过插入从文件流中检索的字符来创建二维数组

问题描述 投票:0回答:1

这是我的代码:

#include<stdio.h>
#define ROW 10
#define COLUMN 20
int main(int argc, char *argv[]){
  FILE* fptr;
  char grid[ROW][COLUMN];
  int i ,j;
  fptr = fopen(argv[1],"r");
  for ( i = 0; i < ROW; i++){
    for ( j = 0; j< COLUMN; j++){

     fscanf(fptr,"%c",&grid[i][j]);
    }


  }
  for(i = 0; i< ROW; i++){
    for(j = 0; j< COLUMN; j++){
      printf("%c",grid[i][j]);
    }
  }



  return(0);
}

这是我的输入文件:

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

这是我的输出:

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0

但是它应该看起来像输入文件本身。我不知道自己做错了什么,因为我感觉自己很无能,我需要这份工作来做作业。问题是输入文件需要存储为2d数组,因为稍后在数组的元素上将用于比较创建COnways的生活游戏。

c multidimensional-array scanf fgets
1个回答
0
投票

fscanf也读取空格和换行符,您可以跳过它

#include<stdio.h>
#define ROW 10
#define COLUMN 20

int main(int argc, char *argv[]){

  FILE* fptr;
  char grid[ROW][COLUMN];
  int i ,j;
  fptr = fopen(argv[1],"r");

for ( i = 0; i < ROW; i++){
for ( j = 0; j< COLUMN; j++){

           fscanf(fptr,"%c ",&grid[i][j]);
        }

            fscanf(fptr,"\n");
       }

 for(i = 0; i< ROW; i++){
 for(j = 0; j< COLUMN; j++){
     printf("%c ",grid[i][j]);
     }

     printf("\n");
     }


 return(0);
}

在读取文件之前确定行大小,列大小不是一个好习惯。您可以使输入文件的第一行包含行大小,列大小。

© www.soinside.com 2019 - 2024. All rights reserved.