1

私は宿題に取り組んでおり、動的に割り当てられた配列を作成する必要があります。この配列には、テキスト ファイルから文字列が取り込まれます。次に、配列を標準出力に出力し、配列をシャッフルしてから、再度出力する必要があります。

私の現在の問題は、セグメンテーション違反が発生しない限り、配列に何も入力できないように見えることです。静的配列を使用してプログラムをテストしたところ、すべてが機能したため、他のコードには問題がないことがわかりました。

ここに私のプログラムのセクションがあります。

void alloc2dArray(char ***source, int dim1, int dim2)
{
    int i = 0;

    source = malloc(sizeof(char *) * dim1);

    if(source == NULL) 
    { 
        printf("Memory full!");
        exit(EXIT_FAILURE);
    }
    for(i = 0; i < dim1; i++)
    {
            source[i] = malloc(sizeof(char) * (dim2 + 1));
            if(source[i] == NULL) 
        { 
            printf("Memory full!"); 
            exit(EXIT_FAILURE);
        }
    }
}

編集:

Three Star Programmer になるのを避けるために、コードを以下のスニペットに変更しました。運が良ければ、それで問題が解決しました。だから、Kniggug が、私が以前は知らなかったものへのリンクを投稿してくれたことに感謝します。

char** alloc2dArray(int dim1, int dim2)
{
        int i = 0;

        char **twoDArray = malloc(sizeof(char *) * dim1);

        if(twoDArray == NULL)
        {
                printf("Memory full!");
                exit(EXIT_FAILURE);
        }
        for(i = 0; i < dim1; i++)
        {
                (twoDArray[i]) = malloc(sizeof(char) * (dim2 + 1));
                if(twoDArray[i] == NULL)
                {
                        printf("Memory full!");
                        exit(EXIT_FAILURE);
                }
        }

        return twoDArray;
}

ありがとうございました。

4

2 に答える 2