将一维数组中的字符存储到二维数组中

时间:2013-03-18 00:33:50

标签: c arrays

我正在尝试将一个项目从一维数组移动到一个带有此循环的二维数组中,但它发生在无限循环中,这是错误的工作..

printf("Enter plaintext :");
scanf("%s",&plaintext);



while(plaintext[k]!='\0')
{

    for (i=0;i<5;i++)
    {
        for (j=0;j<5;j++)
        {
        chip[i][j]=plaintext[k];
        k++;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

无论k如何,变量if(plaintext[k]!=NULL)都会递增,并且可能越过边界。而不是

if (plaintext[k] != NULL)
    chip[i][j] = plaintext[k];
else
    c = +1;
k++;

if (plaintext[k] != NULL)
    chip[i][j] = plaintext[k++];
else {
    c = +1;
    break;
}

同时,如果length长于2d数组的大小,则在早期迭代中复制的字符将被覆盖。

答案 1 :(得分:0)

    scanf("%s", plaintext);

    for (i=0;i<5;i++){
        for (j=0;j<5;j++){
            chip[i][j]=plaintext[k++];
            if(plaintext[k] == '\0'){
                i=j=5;//break;
            }
        }
    }

其他方式

    char *p;

    printf("Enter plaintext :");
    scanf("%s", plaintext);

    p=&chip[0][0];
    while(k < 25 && plaintext[k]!='\0'){
        *p++ = plaintext[k++];
    }

显示芯片

    for (i=0;i<5;i++){
        for (j=0;j<5;j++){
            putchar(chip[i][j]);
            if(--k == 0)
                i=j=5;//break;
        }
        putchar('\n');
    }