2
Итак, на данный момент эта программа выводит пароль с 5 верхним символом, 5 строчными символами и 2 номерами .. но я также хочу добавить случайный символ из списка, например! $%^& *() + = <>?/@ Могу ли я добавить его в цикле for, таком как числа и символы?Добавление случайного символа к паролю в C
Это мой код до сих пор:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
FILE*fp;
int main(void) {
char password[5 + 5 + 2 + 1];
int i, j=0, len=sizeof(password)-1;
int menuNum = 0;
fp = fopen("passwords.txt", "a+");
//Opens the text file to save the Passwords
srand(time(NULL));
printf(" Main Menu\n");
printf("********************************\n");
printf("\nEnter 1 to Generate a New Password: ");
printf("\n\n");
printf("Enter 2 to Check Old Passwords: ");
printf("\n\n");
printf("Enter 3 to Exit. ");
printf("\n\n");
scanf("%d", &menuNum); // reads number
if (menuNum == 1)
{
printf("********************************\n");
printf("\nYour New Password is: \n\n");
//Each Password will Have 13 Characters(5 Upper, 5 Lower, 2 Numbers & 1 Symbol)
for (i = 0; i < 5; ++i)
password[j++] = 'a' + rand() % ('z' - 'a' + 1); //Generates 5 random Lowercase characters
for (i = 0; i < 5; ++i)
password[j++] = 'A' + rand() % ('Z' - 'A' + 1); //Generates 5 random Uppercase characters
for (i = 0; i < 2; ++i)
password[j++] = '0' + rand() % ('0' - '9' + 1); //Generates 2 random numbers
password[j] = '\0';
for(i = 0; i < sizeof(password)-1; ++i)
{
char c = password[i];
j = rand() % len;
password[i] = password[j];
password[j] = c;
}
printf("%s\n\n", password);
printf("********************************\n");
fprintf(fp, "\n%s", password); //Outputs the Generated Passoword to the text file
fclose(fp); //Closes the text file
system("pause");
}
}
Создайте массив этих символов и создайте случайное число в диапазоне массива. –
'' 'может быть проблематично использовать с' char' – anatolyg
Итак, если я добавлю массив вроде: char symbols [] = {"! $%^& *() _ + = @ # ~>"}; Перед основным ... – DigitalD