Преобразование char * в unsigned char *

Как мне правильно скопировать char * в unsigned char * в C. Ниже приведен мой код

int main(int argc, char **argv)
{
    unsigned char *digest;

    digest = malloc(20 * sizeof(unsigned char));
    strncpy(digest, argv[2], 20);
    return 0;
}

Я хотел бы правильно скопировать массив char * в массив unsigned char *. Я получаю следующее предупреждение, используя приведенный выше код

warning: pointer targets in passing argument 1 of âstrncpyâ differ in signedness 

EDIT : Добавление дополнительной информации, Мое требование состоит в том, чтобы вызывающий предоставил дайджест SHA для основной функции в виде строки в командной строке, а основная функция внутренне сохранит его в переваривать. Дайджест SHA может быть лучше всего представлен с использованием беззнакового символа.

Теперь загвоздка в том, что я не могу изменить подпись основной функции (** char), потому что основная функция анализирует другие аргументы, которые ей требуются как char *, а не символ без знака *.

18
задан Rajiv 4 August 2011 в 11:21
поделиться