Рейтинг:
1
OriginalGriff
Ричард дал вам ссылку, которая вам нужна: теперь все, что вам нужно сделать, это использовать ее.
Как же так? Просто: ваша функция получает два параметра, указатель и a
Используйте цикл, который повторяется len
раз, и внутри цикла вызовите rand
функция. Это возвращает целочисленное значение, поэтому используйте оператор % (который возвращает остаток), чтобы получить значение между 0 и длиной charset
минус один. Это ваш случайный индекс в charset
- Итак, извлеките символ в индексе, добавьте его к выходу и увеличьте указатель.
Возможно, вам придется добавить нулевое значение после цикла, если оно будет рассматриваться как строка, но это будет зависеть от определения вашей функции. Если в области памяти, переданной вашей функции, недостаточно символов, не добавляйте их!
k5054
Не забывайте об этом srand()
Обратите внимание, что код, приведенный по ссылке MS Docs, действительно имеет одну проблему: поскольку он использует time()
сеять rand
, он может давать идентичные результаты, если программа запускается более одного раза в течение одной и той же секунды. В общем, вероятность того, что это произойдет, вероятно, довольно мала, но это то, о чем следует знать, если того потребуют обстоятельства.
Rick York
Если это имеет значение, вы можете использовать функцию timeGetTime() и получить миллисекунды. Вероятность того, что программа запустится дважды за одну и ту же миллисекунду, кажется мне чрезвычайно маловероятной.