2

文字列を 2 次元の char 配列に格納するこのコードがあります。私のコードでは、2x6 の 2 次元の char 配列を使用しています。
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]では、NとのM値は「有効な最大のインデックス」ではありません。それらは「値の数」を意味します。

だからあなたの宣言

char aray[1][5];

意図した 2x6 ではなく、サイズが 1x5 の配列を定義します。

必要なもの:

char aray[2][6];

しかしもちろん、実際のインデックス付けは 0 ベースなのでchar aray[2][6]、「最後の」要素は ataray[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 に答える