Openssl ERR_error_string 错误描述 returns null
Openssl ERR_error_string error description returns null
正在尝试打印 OpenSSL 错误描述:
for (unsigned long int er_code=0;er_code<100;er_code++)
{
char * err_data;
ERR_error_string(er_code, err_data);
printf("error code: %lu data: %s\n", er_code, err_data);
}
全部为空。我做错了什么?
err_data
是一个单元化指针。根据 the documentation,“buf 必须至少为 256 字节长。”
所以尝试:
for (unsigned long int er_code = 0; er_code < 100; er_code++)
{
char err_data[256];
ERR_error_string(er_code, err_data);
printf("error code: %lu data: %s\n", er_code, err_data);
}
或者,“如果 buf 为 NULL,则错误字符串被放置在静态缓冲区中。”所以你也可以这样做:
for (unsigned long int er_code = 0; er_code < 100; er_code++)
{
char* err_data = ERR_error_string(er_code, NULL);
printf("error code: %lu data: %s\n", er_code, err_data);
}
正在尝试打印 OpenSSL 错误描述:
for (unsigned long int er_code=0;er_code<100;er_code++)
{
char * err_data;
ERR_error_string(er_code, err_data);
printf("error code: %lu data: %s\n", er_code, err_data);
}
全部为空。我做错了什么?
err_data
是一个单元化指针。根据 the documentation,“buf 必须至少为 256 字节长。”
所以尝试:
for (unsigned long int er_code = 0; er_code < 100; er_code++)
{
char err_data[256];
ERR_error_string(er_code, err_data);
printf("error code: %lu data: %s\n", er_code, err_data);
}
或者,“如果 buf 为 NULL,则错误字符串被放置在静态缓冲区中。”所以你也可以这样做:
for (unsigned long int er_code = 0; er_code < 100; er_code++)
{
char* err_data = ERR_error_string(er_code, NULL);
printf("error code: %lu data: %s\n", er_code, err_data);
}