Cでchar*をunsignedchar*に正しくコピーするにはどうすればよいですか。以下は私のコードです。
int main(int argc, char **argv)
{
unsigned char *digest;
digest = malloc(20 * sizeof(unsigned char));
strncpy(digest, argv[2], 20);
return 0;
}
char*配列をunsignedchar*配列に正しくコピーしたいと思います。上記のコードを使用すると、次の警告が表示されます
warning: pointer targets in passing argument 1 of âstrncpyâ differ in signedness
編集:さらに情報を追加します。私の要件は、呼び出し元がコマンドラインで文字列としてメイン関数にSHAダイジェストを提供し、メイン関数がそれをダイジェストに内部的に保存することです。SHAダイジェストは、unsignedcharを使用して最もよく表すことができます。
ここでの問題は、main関数がunsigned char*ではなくchar*として必要な他の引数を解析するため、main関数(** char)の署名を変更できないことです。