2

我有这段代码,它将字符串存储在二维字符数组中。在我的代码中,我使用的是 2x6 二维字符数组。在提供 12 位字符串 LIKE >“COMEHOMEARUN”时。它应该将其存储为
COMEHO
MEARUN
,但我得到的输出为
COMEHM
MEARUN ...即 [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();
}

有人知道我哪里出错了吗?

4

3 回答 3

4

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

所以你的声明

char aray[1][5];

定义一个大小为 1x5 的数组,而不是您想要的 2x6。

你需要:

char aray[2][6];

但当然,实际的索引是从 0 开始的,所以对于char aray[2][6],“最后一个”元素是 at aray[1][5]

于 2012-11-20T14:39:36.310 回答
0

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

于 2012-11-20T14:36:31.223 回答
0

您的索引不正确。

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

将数组声明为:

   char array[2][6];

那可行。

于 2013-06-12T18:03:39.183 回答