У меня есть функция C, подобная этой.
func(uint8_t *key,uint8_t keylen) {
FILE *fk;
fk=fopen("akey","wb");
fwrite((char *)key,keylen,1,fk);
puts((char *)key); // for testing
fclose(fk);
sprintf(sstring,"... \"%s\" ... ",(char *)key);
// ...other irrelevant stuff for here
system(sstring);
}
Я хочу, чтобы предоставляемая клавиша в качестве ввода использовалась в месте, отмеченном \"%s\"
в sprintf
команде
Ввод:
Key=qwerty
Выход:
$cat akey
qwerty
и вывод puts((char *)key)
равен -
qwerty�
// include newline character as well
Предложите мне это, я пытался с этим (в соответствующей позиции в коде), но получаю segmentation fault
char *p;
memcpy(p,(char *)key,keylen);
puts((char *)p);