Raj*_*jiv 18 c unsigned sha1 char strcpy
如何在C中正确地将char*复制到unsigned char*.以下是我的代码
int main(int argc, char **argv)
{
unsigned char *digest;
digest = malloc(20 * sizeof(unsigned char));
strncpy(digest, argv[2], 20);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想正确地将char*数组复制到unsigned char*数组.我使用上面的代码得到以下警告
warning: pointer targets in passing argument 1 of âstrncpyâ differ in signedness
Run Code Online (Sandbox Code Playgroud)
编辑:添加更多信息,我的要求是调用者在主函数中提供SHA摘要作为命令行上的字符串,主函数在内部将其保存在摘要中.SHA摘要可以使用unsigned char最好地表示.
现在的问题是我无法更改main函数(**char)的签名,因为main函数解析了它需要的其他参数作为char*而不是unsigned char*.
Oli*_*rth 11
要避免编译器警告,您只需要:
strncpy((char *)digest, argv[2], 20);
Run Code Online (Sandbox Code Playgroud)
但是避免编译器警告往往不是一个好主意; 它告诉你,存在根本的不兼容性.在这种情况下,不兼容性char
的范围为-128到+127(通常),而unsigned char
0到+255.