Как сохранить переменную в цикле for?

#c #for-loop #random #var

#c #for-цикл #Случайный #var

Вопрос:

Я создал генератор случайных паролей.В функции void passwordGenerator(int sizeOfPassword) проблема заключается в следующем: я пытаюсь сохранить пароль, сгенерированный программой, sum но я не знаю, как это сделать правильно.

Как мне сохранить пароль из случайных цифр sum .

 #include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;

void passwordGenerator(int sizeOfPassword)
{
    srand(time(NULL));

    char allChars[] = {"0123456789!@#$%^amp;*abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"};
    char sum;
    for(int i = 0; i < sizeOfPassword; i  ){
        sum = sum   allChars[rand()%sizeOfPassword];
    }
    std::cout<<sum<<std::endl;
}

int main()
{
    int sizeOutput;
    char wannaPlay = 'y';
    while(wannaPlay == 'y'){
        std::cout<<"Enter the size of password: ";
        std::cin>>sizeOutput;
        passwordGenerator(sizeOutput);
        std::cout<<"nRun Again[y/n]? : ";
        std::cin>>wannaPlay;
    }
    return 0;
}
  

Спасибо

Комментарии:

1. Похоже, вы хотите сохранить последовательность символов вместо одного. Попробуйте использовать std::string with = для добавления каждого символа.

2. @RetiredNinja да, я пытаюсь получить последовательность массива

3. sum это один символ, измените его на std::string , если вам нужен массив, который вы можете использовать sum.data() после завершения построения строки

4. @AlanBirtles std::string sum = sum allChars[rand()%sizeOfPassword]; нравится это?

5. @AndrewTruckle Я обязательно изучу это, но дело не в пробелах в знаниях, а в практике и опыте.

Ответ №1:

Вы можете отображать букву за буквой:

 void passwordGenerator(int sizeOfPassword)
{
    const char allChars[] = {"0123456789!@#$%^amp;*abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"};
    for (int i = 0; i < sizeOfPassword; i  ){
        std::cout << allChars[rand() % sizeof (allChars)];
    }
}
  

или построение строки:

 std::string passwordGenerator(int sizeOfPassword)
{
    const char allChars[] = {"0123456789!@#$%^amp;*abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"};
    std::string password;
    for (int i = 0; i < sizeOfPassword; i  ){
        password  = allChars[rand() % sizeof (allChars)];
    }
    return password;
}
  

Комментарии:

1. Спасибо, приятель, ранее я использовал первый код, который вы упомянули, но мне нужно было сохранить выходные данные в переменной, так что еще раз спасибо