C中的2-D Char数组意外输出

时间:2012-11-20 14:33:18

标签: c arrays char 2d

我有一块COAD,它将一个字符串存储在一个2-d char数组中。我的代码我使用的是2x6 2-D char数组。提供12比特字符串LIKE> “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();
}

有人知道我哪里出错吗?

3 个答案:

答案 0 :(得分:4)

char array[N][M]等C数组声明中,NM“最高有效索引”;它们的意思是“价值的数量”。

所以你的宣言

char aray[1][5];

根据您的意图定义一个大小为1x5, 2x6的数组。

你需要:

char aray[2][6];

但是,当然,实际索引是基于0的,因此对于char aray[2][6],“last”元素位于aray[1][5]

答案 1 :(得分:0)

您可以尝试将char aray[1][5]更改为char aray[2][6]

答案 2 :(得分:0)

您的索引不正确。

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

将数组声明为:

   char array[2][6];

这将有效。