0
#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]);
}

1 つ目は、プレーン (1D 配列) の文字列を 2D の動的配列を使用してチップ (2D 配列) に移動しようとしていますが、このコードを実行しようとすると、動作が停止しただけで何も表示されません.. 私の 2D 配列に何か問題がありますか? ?

4

1 に答える 1

1

Linuxでコンパイルし(Linuxではmainが値を返さなければならないため、voidを省略した後)、「セグメンテーション違反」が発生しました。私はそれが原因だと思いますprintf("%s",chip[0][0]);、それはあるべきですprintf("%s",chip[0]);

つまり、chip [0][0]はchip[0]の特定の文字を返し、チップ配列の最初の文字列を出力したいのですよね?

于 2013-03-18T09:55:00.493 に答える