1

重複の可能性:
引数としての void ポインター

C で単純な関数を作成しようとしていますが、空の出力が得られ、その理由がわかりません。

int encrypt(unsigned char *message, char *key,  unsigned char *buffered_message)
{
    /* ... */

    buffered_message = calloc(1, (blocks * block_size));

    /* ... */

    printf("Message: %s\n", buffered_message);

    return strlen(buffered_message);
}

関数内では、メッセージは問題なく出力されます。しかし、関数を で使用しようとするとmain、何か問題が発生します。

int main()
{
    /* ... */

    unsigned char *encrypted;

    int len = encrypt(message, key, encrypted);

    if (len > 0)
    {
        printf("The encrypted message  %s\n", encrypted);
    }

    return 0;
}
4

1 に答える 1

1

メモリを割り当て、関数のローカル ポインターにコピーするため、ダブル ポインターを渡す必要があります。

私はコンパイルしていませんが、以下はうまくいくはずです。

int encrypt(unsigned char *message, char *key,  unsigned char **buffered_message)
{
    /* ... */
    *buffered_message = calloc(1, (blocks * block_size));
    /* ... */
    printf("Message: %s\n", *buffered_message);
    return strlen(*buffered_message);
}

メインから

unsigned char *encrypted;
int len = encrypt(message, key, &encrypted);
printf("The encrypted message  %s\n", encrypted);
于 2012-09-26T10:05:09.383 に答える