char* bit_encrypt(const unsigned char* text)
unsigned char* bit_decrypt(const char* text)
您好如何使用unsigned在这两种类型的函数上分配内存和返回值? 当我尝试在第一个函数
中进行分配时出现此错误error: pointer targets in passing argument 1 of ‘strlen’ differ in signedness [-Werror=pointer-sign]
unsigned char* binary = (unsigned char*)malloc((strlen(text) + 1) * sizeof(char));
如何摆脱此错误?
答案 0 :(得分:1)
您可以简单地将unsigned char *转换为char *。像这样:
unsigned char* binary = (unsigned char*)malloc(strlen((char*)text) + 1);
你不必像你那样投射malloc结果。这是不必要的,因为在这种情况下void *
会自动安全地提升为任何其他指针类型。并且它增加了代码的混乱,强制转换不易读取(特别是如果指针类型很长,就像unsigned char一样)。
根据Basile Starynkevitch的建议,您不必乘以sizeof(char)
。最后,代码将如下所示:
unsigned char* binary = malloc(strlen((char*)text) + 1);