1

我正在尝试创建一个字符网格,对于这个示例,我使用的是 3×3 网格。我正在使用两个 for 循环从单独的一维字符数组中进行分配,但每一行的最终值总是等于下一个的第一个值,但不明白为什么。我对行和列的计算有问题吗?

char text[8] = "abcdefghi";
char grid[2][2];

int i,j;
for(i=0; i<=8; i++)
{
    char c = text[i];
    int row = i/3;
    int col = i%3;
    printf("%c   row=%d col=%d i=%d\n", c, row, col, i);
    grid[row][col] = c;
}

printf("------\n");

for(i=0; i<3; i++)
{
    for(j=0; j<3; j++)
    {
        printf("%c   row=%d col=%d \n", grid[i][j], i, j);
    }
}
4

2 回答 2

2

更改这两个声明

char text[8] = "abcdefghi"; //you require size of 10  
//9 bytes to store 9 characters and extra one is to store null character

char grid[2][2];  here you need to declare 3 by 3    
// array[2][2] can able to store four characters only  
// array[3][3] can store 9 characters  

像这样

char text[10] = "abcdefghi"; //you require size of 10
char grid[3][3];  here you need to declare 3 by 3  
于 2013-09-13T21:11:11.420 回答
2

您在第一行有错误

char text[8] = "abcdefghi"; 

您声明了一个大小为 8 的数组,但您想用 10 个字符对其进行初始化。执行此操作或执行此操作:

char text[10] = "abcdefghi"; 

char text[] = "abcdefghi"; 

类似的错误是char grid[2][2];你有 2 x 2 网格而不是 3 x 3。

于 2013-09-13T21:11:36.310 回答