可能重复:
void pointer as argument
我正在尝试在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;
}
答案 0 :(得分: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);