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 回答