c - 使用 C,在初始化结构数组时,似乎第一列和最后一列重叠

标签 c arrays struct

当 main 运行时,我得到了这个输出。第一列以某种方式与最后一列混淆,即使它是专门初始化的。

0 0 0 0 0 0 4 3 13 3 3 0 0 0 0 0 0
0 0 0 0 0 4 0 0 5 0 0 2 0 0 0 0 0
0 0 0 0 4 0 0 0 5 0 0 0 2 0 0 0 0
0 0 0 18 0 0 0 0 5 0 0 0 0 17 0 0 0
0 0 4 0 2 0 7 12 19 12 3 0 8 0 2 0 0
0 4 0 0 0 0 0 0 5 0 0 0 0 0 0 2 0
0 0 0 0 5 0 0 0 5 0 0 0 5 0 0 0 2
2 0 0 0 11 0 0 0 5 0 0 0 11 0 0 0 1
1 7 7 7 20 7 7 7 14 7 7 7 20 7 7 7 1
1 0 0 0 11 0 0 0 5 0 0 0 11 0 0 0 1
1 0 0 0 1 0 0 0 5 0 0 0 1 0 0 0 0
0 6 0 0 0 0 0 0 5 0 0 0 0 0 0 8 0
0 0 6 0 4 0 7 12 19 12 3 0 6 0 8 0 0
0 0 0 15 0 0 0 0 5 0 0 0 0 16 0 0 0
0 0 0 0 6 0 0 0 5 0 0 0 8 0 0 0 0
0 0 0 0 0 6 0 0 5 0 0 8 0 0 0 0 0
0 0 0 0 0 0 7 7 7 7 8 0 0 0 0 0 0

运动.h

struct square{
  int directions;
  int isRobotHere;
  int isMultipleDirections;
  int printable;
};
typedef struct square Square;

struct robot{
  int robotx;
  int roboty;
  int robotz;
  int destinationx;
  int destinationy;
  int destinationz;
};
typedef struct robot Robot;
enum direction{North, NorthWest, West, SouthWest, South, SouthEast, East, NorthEast};
Square firstfloor[16][16];
Square secondfloor[16][16];
void printbothfloors();
void initializeArrays();

初始化数组.c

#include <stdio.h>
#include "motion.h"
void initializeArrays(){
firstfloor[6][0].directions=5;
firstfloor[7][0].directions=5;
firstfloor[8][0].directions=14;
firstfloor[9][0].directions=5;
firstfloor[10][0].directions=6;
firstfloor[11][1].directions=6;
firstfloor[12][2].directions=6;
firstfloor[13][3].directions=15;
firstfloor[14][4].directions=6;
firstfloor[15][5].directions=6;
firstfloor[16][6].directions=7;
firstfloor[16][7].directions=7;
firstfloor[16][8].directions=7;
firstfloor[16][9].directions=7;
firstfloor[16][10].directions=8;
firstfloor[15][11].directions=8;
firstfloor[14][12].directions=8;
firstfloor[13][13].directions=16;
firstfloor[12][14].directions=8;
firstfloor[11][15].directions=8;
firstfloor[10][16].directions=1;
firstfloor[9][16].directions=1;
firstfloor[8][16].directions=1;
firstfloor[7][16].directions=1;
firstfloor[6][16].directions=2;
firstfloor[5][15].directions=2;
firstfloor[4][14].directions=2;
firstfloor[3][13].directions=17;
firstfloor[2][12].directions=2;
firstfloor[1][11].directions=2;
firstfloor[0][10].directions=3;
firstfloor[0][9].directions=3;
firstfloor[0][8].directions=13;
firstfloor[0][7].directions=3;
firstfloor[0][6].directions=4;
firstfloor[1][5].directions=4;
firstfloor[2][4].directions=4;
firstfloor[3][3].directions=18;
firstfloor[4][2].directions=4;
firstfloor[5][1].directions=4;
firstfloor[1][8].directions=5;
firstfloor[2][8].directions=5;
firstfloor[3][8].directions=5;
firstfloor[4][8].directions=19;
firstfloor[5][8].directions=5;
firstfloor[6][8].directions=5;
firstfloor[7][8].directions=5;
firstfloor[8][8].directions=14;
firstfloor[9][8].directions=5;
firstfloor[10][8].directions=5;
firstfloor[11][8].directions=5;
firstfloor[12][8].directions=19;
firstfloor[13][8].directions=5;
firstfloor[14][8].directions=5;
firstfloor[15][8].directions=5;
firstfloor[8][1].directions=7;
firstfloor[8][2].directions=7;
firstfloor[8][3].directions=7;
firstfloor[8][4].directions=20;
firstfloor[8][5].directions=7;
firstfloor[8][6].directions=7;
firstfloor[8][7].directions=7;
firstfloor[8][9].directions=7;
firstfloor[8][10].directions=7;
firstfloor[8][11].directions=7;
firstfloor[8][12].directions=20;
firstfloor[8][13].directions=7;
firstfloor[8][14].directions=7;
firstfloor[8][15].directions=7;
firstfloor[7][4].directions=11;
firstfloor[9][4].directions=11;
firstfloor[4][7].directions=12;
firstfloor[4][9].directions=12;
firstfloor[12][7].directions=12;
firstfloor[12][9].directions=12;
firstfloor[7][12].directions=11;
firstfloor[9][12].directions=11;
firstfloor[4][4].directions=2;
firstfloor[4][6].directions=7;
firstfloor[4][10].directions=3;
firstfloor[4][12].directions=8;
firstfloor[6][4].directions=5;
firstfloor[6][12].directions=5;  
 firstfloor[10][4].directions=1;
firstfloor[10][12].directions=1;
firstfloor[12][4].directions=4;
firstfloor[12][6].directions=7;
firstfloor[12][10].directions=3;
firstfloor[12][12].directions=6;
firstfloor[11][0].directions=0;
firstfloor[5][16].directions=0;
}

printbothfloors.c

#include <stdio.h>
#include <stdlib.h>
#include "motion.h"
void printbothfloors(){
  //  printf("printfloor is running");
  int upper, lower, i, j;
  printf("%4d %4d %4d %4d %4d", firstfloor[6][0].directions, firstfloor[7][0].directions, firstfloor[8][0].directions, firstfloor[9][0].directions, firstfloor[10][0].directions);
  printf("%4d %4d %4d %4d %4d", firstfloor[6][16].directions, firstfloor[7][16].directions, firstfloor[8][16].directions, firstfloor[9][16].directions, firstfloor[10][16].directions);


  printf("FIRST FLOOR");
  printf("\n-");
  /* The next for loop prints out the upper edge */
  for (upper = 0; upper < 18; upper++){
    printf("----");
  }
  printf("\n");

  /*The next for loop prints out the floor, every element is 4 digits wide */
  for (i = 0; i <= 16; i++){
    printf("|");
    for(j = 0; j <= 16; j++){
      printf("%4d", firstfloor[i][j].directions);
    }
    printf("   |\n");
  }
  /* The next for loop prints out the lower edge */
  for (lower = 0; lower < 18; lower++){
    printf("----");
  }
  printf("-\n");
  /*
  printf("SECOND FLOOR");
  //  printf("printfloor is running");
  printf("\n-----");
  // The next for loop prints out the upper edge 
  for (upper = 0; upper < 17; upper++){
    printf("----");
  }
  printf("\n");

  //The next for loop prints out the floor, every element is 4 digits wide 
  for (i = 0; i <= 16; i++){
    printf("|");
    for(j = 0; j <= 16; j++){
      printf("%4d", secondfloor[i][j].directions);
    }
    printf("   |\n");
  }
  // The next for loop prints out the lower edge 
  for (lower = 0; lower < 17; lower++){
    printf("----");
  }
  printf("-----\n");
*/
}

程序2.c

#include <stdio.h>
#include <stdlib.h>
#include "motion.h"
//#include "printbothfloors.h"
int main(){
  int row = 0;
  int column = 0;
  initializeArrays();   
// printbothfloors();
/*
  for (row=0; row < 17; row++){
    for (column=0; column < 17; column++){

      // firstfloor[row][column].directions=0;
      // secondfloor[row][column].directions=5;
      //firstfloor[i][j].isRobotHere=0;
      //secondfloor[i][j].isRobotHere=0;
       //firstfloor[i][j].isMultipleDirections=0;
       //secondfloor[i][j].isMultipleDirections=0;

    }
  }

 firstfloor[6][0].directions=5;
 firstfloor[7][0].directions=5;
 firstfloor[8][0].directions=14;
 firstfloor[9][0].directions=5;
 firstfloor[10][0].directions=6;
 firstfloor[11][1].directions=6;
 firstfloor[12][2].directions=6;
 firstfloor[13][3].directions=15;
 firstfloor[14][4].directions=6;
 firstfloor[15][5].directions=6;
 firstfloor[16][6].directions=7;
 firstfloor[16][7].directions=7;
 firstfloor[16][8].directions=7;
 firstfloor[16][9].directions=7;
 firstfloor[16][10].directions=8;
 firstfloor[15][11].directions=8;
 firstfloor[14][12].directions=8;
 firstfloor[13][13].directions=16;
 firstfloor[12][14].directions=8;
 firstfloor[11][15].directions=8;
 firstfloor[10][16].directions=1;
 firstfloor[9][16].directions=1;
 firstfloor[8][16].directions=1;
 firstfloor[7][16].directions=1;
 firstfloor[6][16].directions=2;
 firstfloor[5][15].directions=2;
 firstfloor[4][14].directions=2;
 firstfloor[3][13].directions=17;
 firstfloor[2][12].directions=2;
 firstfloor[1][11].directions=2;
 firstfloor[0][10].directions=3;
 firstfloor[0][9].directions=3;
 firstfloor[0][8].directions=13;
 firstfloor[0][7].directions=3;
 firstfloor[0][6].directions=4;
 firstfloor[1][5].directions=4;
 firstfloor[2][4].directions=4;
 firstfloor[3][3].directions=18;
 firstfloor[4][2].directions=4;
 firstfloor[5][1].directions=4;
 firstfloor[1][8].directions=5;
   firstfloor[2][8].directions=5;
   firstfloor[3][8].directions=5;
   firstfloor[4][8].directions=19;
   firstfloor[5][8].directions=5;
   firstfloor[6][8].directions=5;
   firstfloor[7][8].directions=5;
   firstfloor[8][8].directions=14;
   firstfloor[9][8].directions=5;
   firstfloor[10][8].directions=5;
   firstfloor[11][8].directions=5;
   firstfloor[12][8].directions=19;
   firstfloor[13][8].directions=5;
   firstfloor[14][8].directions=5;
   firstfloor[15][8].directions=5;
   firstfloor[8][1].directions=7;
   firstfloor[8][2].directions=7;
   firstfloor[8][3].directions=7;
   firstfloor[8][4].directions=20;
   firstfloor[8][5].directions=7;
   firstfloor[8][6].directions=7;
   firstfloor[8][7].directions=7;
   firstfloor[8][9].directions=7;
   firstfloor[8][10].directions=7;
   firstfloor[8][11].directions=7;
   firstfloor[8][12].directions=20;
   firstfloor[8][13].directions=7;
   firstfloor[8][14].directions=7;
   firstfloor[8][15].directions=7;
   firstfloor[7][4].directions=11;
   firstfloor[9][4].directions=11;
   firstfloor[4][7].directions=12;
   firstfloor[4][9].directions=12;
   firstfloor[12][7].directions=12;
   firstfloor[12][9].directions=12;
   firstfloor[7][12].directions=11;
   firstfloor[9][12].directions=11;
   firstfloor[4][4].directions=2;
   firstfloor[4][6].directions=7;
   firstfloor[4][10].directions=3;
   firstfloor[4][12].directions=8;
   firstfloor[6][4].directions=5;
   firstfloor[6][12].directions=5;
   firstfloor[10][4].directions=1;
   firstfloor[10][12].directions=1;
   firstfloor[12][4].directions=4;
   firstfloor[12][6].directions=7;
   firstfloor[12][10].directions=3;
   firstfloor[12][12].directions=6;
   firstfloor[11][0].directions=0;
   firstfloor[5][16].directions=0;
*/
   // for (i = 0; i < 17; i++){
   // firstfloor
   // printbothfloors();
   // pbf_entrypoints();
/*
row = 0;
column = 0;
while (i < 17){
  firstfloor[i][8] = 1;
  secondfloor[i][8] = 1;
  firstfloor[8][i] = 1;
  secondfloor[8][i] = 1;
  i++;
 }
*/
 printf("Function got here");
 printbothfloors();

 return 0;
}

最佳答案

Type arr[N] 的有效索引在 0N-1 之间。

这适用于任何 Type 和任意数量的维度。

关于c - 使用 C,在初始化结构数组时,似乎第一列和最后一列重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25820680/

相关文章:

java - 如何使用 UDP 将结构从 C 应用程序发送到 Java 应用程序

c - Linux 系统调用何时触发段错误与返回 EFAULT?

c - 有没有办法在 GCC 或 cl.exe 的预处理和编译之间插入一个步骤?

php - 如何使这个数组变平?

javascript - ng-repeat 非数组/对象/以相同的方式处理数组和非数组

c - 如何在同一行初始化包含 const char* 的结构和 const char* 本身?

c - 结构体作为外部函数 C 的参数

javascript - 为什么我的 for 循环返回正确答案,但我的 forEach 却没有?

arrays - OOP 中的对象和结构有什么区别?

c++ - 您能否像在 C# 中那样在 C++ 中显式设置结构布局/对齐方式?