strcat()
принимает char*
в качестве ввода, но вместо этого вы даете ему один char
, таким образом, ошибка компилятора.
Кроме того, буфер, в который strcat()
пишет, должен быть нулевымзавершен, но ваш буфер targ
не имеет нулевого завершения изначально, и вы все равно не выделяете достаточно места для окончательного нулевого терминатора.
Вам вообще не нужно использовать strcat()
.Поскольку в любом случае вы выполняете цикл, просто используйте счетчик цикла в качестве индекса для записи в буфер:
Кроме того, вы используете неправильное целочисленное значение, когда по модулю возвращается значение rand()
.Вы создаете случайный индекс, который может выйти за границы вашего ab[]
массива.
Попробуйте вместо этого:
char *randomGet(int num)
{
srand(time(NULL));
static const char ab[] = "0123456789ABCDEFGHIGKLMNOPQRSTUVWXYZ"; //Alphabet&Digit
char *targ = new char[num+1];
for (int i = 0; i < num; ++i) {
targ[i] = ab[rand() % 36];
}
targ[num] = '\0';
return targ;
}