nordic
Требуется создать последовательность из characters случайных букв/цифр взятых из списка. Вывод code должен быть типа char...
Код:
char *code;
char *possible = "23456789bcdfghjkmnpqrstvwxyz";
for (int i = 0; i < characters; i++) {
code += possible[rand()%28];
}
Все бы хорошо, только код всегда "r" =)
Код:
char *code = (char*)malloc(characters + 1);
code[characters] = 0;
char *pCode = code;
char *possible = "23456789bcdfghjkmnpqrstvwxyz";
for (int i = 0; i < characters - 1; i++) {
*(pCode++) = possible[rand()%strlen(*possible)];
}
invalid conversion from `char' to `const char*'
В общем совсем запутался... Спасибо.
asgor
char *code=new char[characters+1];
char *possible = "23456789bcdfghjkmnpqrstvwxyz";
int possible_len=strlen(possible);
for (int i = 0; i < characters; i++) {
code[i]=possible[rand()%possible_len];
}
code[characters]=0;
Salvator
во-первый, юзай srand() для инициализации гсч.
во-вторых, rand()%possible_len не даст дебе случайное число из нужного диапазона. см. RAND_MAX
в третьих, не уверен, что в c++ просто так можно складывать char*; где-то должен быть класс, который позволяет так делать, что-то типа перегруженной строки.
nordic
asgor - спасибо! работает.
Salvator - Ты прав, rand()%possible_len действительно всегда выдает один и тот же код =( Буду доделывать...
всех оценил ;)