Как объявить "char password_value[1000] = "";" от "password_length"?
Как сложить "password_value += password_chars[j];" ?
Так выдает ошибку, а если я использую "strcat(password_value += password_chars[j]);", то вместо 2 символов получаю почему-то больше.
if(!error)
{
char s_russian[33] =
{
"àáâãä叿çèéêëìíîïðñòóôõöøùúûüýþÿ"
};
char s_latin[27] =
{
"abcdefghijklmnopqrstuvwxyz"
};
char S_RUSSIAN[33] =
{
"ÀÁÂÃÄŨÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞß"
};
char S_LATIN[27] =
{
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
};
char s_num[11] =
{
"0123456789"
};
char s_esc[27] =
{
"`~@#¹$;%^:&?*()-_=+|[{]}<>"
};
char password_chars[153] = "";
if(CheckBox1->Checked == true && CheckBox3->Checked == true)
{
strcat(password_chars, s_russian);
}
if(CheckBox2->Checked == true && CheckBox3->Checked == true)
{
strcat(password_chars, s_latin);
}
if(CheckBox1->Checked == true && CheckBox4->Checked == true)
{
strcat(password_chars, S_RUSSIAN);
}
if(CheckBox2->Checked == true && CheckBox4->Checked == true)
{
strcat(password_chars, S_LATIN);
}
if(CheckBox5->Checked == true)
{
strcat(password_chars, s_num);
}
if(CheckBox6->Checked == true)
{
strcat(password_chars, s_esc);
}
int i = 1;
int password_length = StrToInt(Edit1->Text);
int j = 0;
int password_chars_length = strlen(password_chars);
char password_value[1000] = "";
for(i = 1; i <= password_length; i++)
{
j = rand() % password_chars_length + 0;
password_value += password_chars[j];
}
Edit2->Text = password_value;
}
Изменил вот так, теперь выводит кракозябры и ругается на память на delete спустя нескольких вызовов.
char * password_value = new char[password_length + 1];
for(i = 1; i <= password_length; i++)
{
j = rand() % password_chars_length;
password_value += password_chars[j];
}
password_value[password_length] = 0;
Edit2->Text = password_value;
delete[] password_value;
Выбираю цифры, длина 22, рандом выводит "abOrder" и прочую чушь