#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]!='\0';i++)
{
max2++;
}
printf("Enter plaintext :");
scanf("%s",&plaintext);
for( i = 0; plaintext[i] != '\0'; i++ )
{
plain++;
}
if (plain%max2==0)
max1=plain/max2;
else
max1=plain/max2+1;
while(plaintext[k]!='\0')
{
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动态数组的chip(2d数组)中,但是当我试图运行此代码时,它什么也没有停止工作..我的2D数组有什么问题吗?
最佳答案
我在Linux上编译了它(省略了空格,因为在Linux中main必须返回一个值),然后出现了“段错误”。我想是因为printf("%s",chip[0][0]);
,应该是printf("%s",chip[0]);
我的意思是chip [0] [0]在chip [0]中返回一个特定字符,您想打印芯片数组中的第一个字符串,对吗?
关于c - 打印二维阵列时的无限循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15473448/