我正在尝试将一个项目从一维数组移动到一个带有此循环的二维数组中,但它发生在无限循环中,这是错误的工作..
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++;
}
}
}
答案 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');
}