C中的二维字符数组意外输出

C中的二维字符数组意外输出,c,arrays,char,2d,C,Arrays,Char,2d,我有一段将字符串存储在二维字符数组中的代码 二维字符数组。提供12位字符串,如>“COMEHOMEARUN”。它应该将其存储为 C O M E H O M E A R U N 但是我得到的输出是 C O M E H M M E A R U N…即[0]6]处的值自动获取[1][0]的值 这是密码 #include<stdio.h> #include<conio.h> void main() { char string[20]; char aray[1][5

我有一段将字符串存储在二维字符数组中的代码 二维字符数组。提供12位字符串,如>“COMEHOMEARUN”。它应该将其存储为
C O M E H O
M E A R U N
但是我得到的输出是
C O M E H M
M E A R U N…即[0]6]处的值自动获取[1][0]的值

这是密码

#include<stdio.h>
#include<conio.h>
void main()
{
    char string[20];
    char aray[1][5];
    int i,j,k=0;
    gets(string);
    //storing the individual characters in the string in the form of 2x6 char array
    for(i=0;i<=1;i++)
    {
        for(j=0;j<=5;j++)
        {
            aray[i][j]=string[k];
            k++;
        }
    }
    //displaying the array Generated
    for(i=0;i<=1;i++)
    {
        for(j=0;j<=5;j++)
        {
            printf("%c ", aray[i][j]);
        }
        printf("\n");
    }
    getch();
}
#包括
#包括
void main()
{
字符串[20];
chararay[1][5];
int i,j,k=0;
获取(字符串);
//以2x6字符数组的形式存储字符串中的单个字符

对于(i=0;i您可以尝试将
chararay[1][5]
更改为
chararay[2][6]
您可以尝试将
chararay[1][5]
更改为
chararay[2][6]
在类似
char array[N][M]
的C数组声明中,
N
M
值不是最高有效索引;它们的意思是“值的数量”

那么你的声明呢

char aray[1][5];
定义的数组大小为1x5,而不是您想要的2x6

你需要:

char aray[2][6];

当然,实际的索引是基于0的,因此对于
chararay[2][6]
,“last”元素位于
aray[1][5]
,在类似
char array[N][M]
的C数组声明中,
N
M
值是而不是最高的有效索引;
它们表示“值的数量”

那么你的声明呢

char aray[1][5];
定义的数组大小为1x5,而不是您想要的2x6

你需要:

char aray[2][6];

但当然,实际的索引是基于0的,因此对于
chararay[2][6]
,最后一个“元素位于
aray[1][5]
,您的索引是不正确的

当你声明任何字符数组时,你必须给出足够的长度。在你的代码中,你给出了维度1,但它需要2

将数组声明为:

   char array[2][6];

那就行了。

您的索引不正确

当你声明任何字符数组时,你必须给出足够的长度。在你的代码中,你给出了维度1,但它需要2

将数组声明为:

   char array[2][6];
那就行了