Простая функция генерации случайных строк в C, пожалуйста.Покажи мне свое искусство! - PullRequest
2 голосов
/ 08 июля 2010

Я работаю над небольшим (на самом деле не таким уж и маленьким) проектом на C (ссылка на этот вопрос ), и мне нужна небольшая функция в C, которая генерирует уникальную и случайную строку.

Мне нужен маленький, который я могу включить в качестве служебной функции в файл .c.Пожалуйста, помогите мне с вашими мозгами, и покажите мне, как умно это можно сделать!

Спасибо и виртуальное БОЛЬШОЕ объятие для лучшего решения:)

РЕДАКТИРОВАТЬ: (Что я только что сказал mswниже) Я на самом деле думаю, что мне просто нужна случайная строка в качестве ключа (которая будет выглядеть как uuid), и я подумал, что это будет сделано с отметками времени или что-то подобное.(Я не хочу добавлять кучу файлов в свой проект только для генерации случайных ключей)

Извините за путаницу, все!

EDIT2: Спасибо всем за ваш вклад,Наконец-то я воспользуюсь OSSP uuid lib с SHA-1, это выглядит проще в реализации / интеграции

Ответы [ 5 ]

2 голосов
/ 08 июля 2010

Не изобретайте колесо, возможно, на вашей платформе уже написана функция: http://en.wikipedia.org/wiki/Uuid#Implementations

1 голос
/ 08 июля 2010

Вы можете посмотреть на этот интернет-проект , который объясняет всю концепцию и попытаться реализовать один из алгоритмов.

1 голос
/ 08 июля 2010

Еще одна ссылка для вас - источник libuuid от ext2fs.

0 голосов
/ 09 июля 2010

А как насчет tmpnam ?

0 голосов
/ 08 июля 2010

А как насчет счетчика?

Если вы не многопоточный, просто сохраните фактическое значение в переменной static.(Поскольку вам нужна строка, вам нужно будет сделать sprintf или около того, чтобы получить то, что вам нужно.)

Если вы на самом деле многопоточны, когда вы производите случайный ключ с помощью sprintf, приклейте счетчиквместе с идентификатором потока и / или процесса.

...