Michael Shn Ответов: 2

Как сгенерировать случайную строку, используя символы длины(len)? в C


Как сгенерировать случайную строку, используя символы длины(len)? в C

void gen_random(char *s, const int len)
{
    char charset[] = "0123456789!\"#$%&'()*+-/. ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
}


Что я уже пробовал:

Я попробовал сделать char randomString

Patrice T

Тщательно продумано!
В этом вопросе нет никакого смысла.

2 Ответов

Рейтинг:
1

OriginalGriff

Ричард дал вам ссылку, которая вам нужна: теперь все, что вам нужно сделать, это использовать ее.
Как же так? Просто: ваша функция получает два параметра, указатель и a
Используйте цикл, который повторяется len раз, и внутри цикла вызовите rand функция. Это возвращает целочисленное значение, поэтому используйте оператор % (который возвращает остаток), чтобы получить значение между 0 и длиной charset минус один. Это ваш случайный индекс в charset - Итак, извлеките символ в индексе, добавьте его к выходу и увеличьте указатель.

Возможно, вам придется добавить нулевое значение после цикла, если оно будет рассматриваться как строка, но это будет зависеть от определения вашей функции. Если в области памяти, переданной вашей функции, недостаточно символов, не добавляйте их!


k5054

Не забывайте об этом srand() Обратите внимание, что код, приведенный по ссылке MS Docs, действительно имеет одну проблему: поскольку он использует time() сеять rand, он может давать идентичные результаты, если программа запускается более одного раза в течение одной и той же секунды. В общем, вероятность того, что это произойдет, вероятно, довольно мала, но это то, о чем следует знать, если того потребуют обстоятельства.

Rick York

Если это имеет значение, вы можете использовать функцию timeGetTime() и получить миллисекунды. Вероятность того, что программа запустится дважды за одну и ту же миллисекунду, кажется мне чрезвычайно маловероятной.

Рейтинг:
0

Richard MacCutchan

Видеть rand | Microsoft Docs[^].


KarstenK

RTFM - эпический ответ.

госкомнацрелигии ;-)