0

我正在尝试使用此循环将一个项目从一维数组移动到二维数组中,但它碰巧无限循环是错误的 hre..

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++;
        }
    }
}
4

2 回答 2

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 数组的大小,则在早期迭代中复制的字符将被覆盖。

于 2013-03-18T00:59:46.530 回答
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');
    }
于 2013-03-18T06:53:42.513 回答