二维阵列的无限循环打印


#include <stdio.h>

void main()
{
    char plaintext[50];
    char key[20];
    int plain=0,max1=0,max2=0; // max2 amount of coloumn n max1 for row on chip
    char chip[30][30];
    int i,j,k=0,c=0;
    printf("Enter key :");
    scanf("%s",&key);
    for(i=0;key[i]!='';i++)
    {
        max2++; 
    }
    printf("Enter plaintext :");
    scanf("%s",&plaintext);
    for( i = 0; plaintext[i] != ''; i++ ) 
    {
        plain++; 
    }
    if (plain%max2==0)
    max1=plain/max2;
    else
    max1=plain/max2+1;
    while(plaintext[k]!='')
    {
        for (i=0;i<max1;i++)
        {
            for (j=0;j<max2;j++)
            {
            chip[i][j]=plaintext[k];
            k++;
            }
        }
    }
    printf("%s",chip[0][0]);
}

第一个我试图将字符串在平面(1D数组)移动到芯片(2d数组)上的2d动态数组,但当我试图运行此代码时,它只显示停止工作。我的二维阵列有什么问题吗?

我在Linux上编译了它(省略了空白,因为在Linux主必须返回一个值),我得到了"分割错误"。我猜是因为printf("%s",chip[0][0]);,应该是printf("%s",chip[0]);

我的意思是chip[0][0]在chip[0]中返回一个特定的字符,你想在chip数组中打印第一个字符串,对吗?