Faça um código em C para gerar uma sequência de
caracteres aleatórios da tabela ASCII entre 48 e 126 para ser utilizado em uma senha. Leia
na função principal e faça a geração da senha em uma função a parte.
Passo 1
Então, galera! A gente tem uma tarefa de programação em C. O objetivo é criar um código que gera uma senha com
caracteres aleatórios, usando caracteres da tabela ASCII que vão do 48 ao 126. Vamos precisar saber como gerar números aleatórios, manipular caracteres e organizar nosso código em funções distintas para facilitar a leitura e manutenção.
Passo 2
Primeiro, vamos pensar em como gerar números aleatórios em C. Para isso, usamos a função
rand()
, que gera números inteiros aleatórios. Mas, por padrão, rand()
sempre gera a mesma sequência de números toda vez que o programa roda. Para variar isso, inicializamos o gerador de números aleatórios com srand(time(NULL))
, que usa o tempo atual como semente.Passo 3
Agora, precisamos garantir que os números gerados estejam entre 48 e 126, que são os códigos ASCII dos caracteres que queremos incluir na senha. Para isso, usamos a função de módulo
%
para limitar o intervalo e depois adicionamos 48 para ajustar o valor mínimo:char caractere = (rand() % (126 - 48 + 1)) + 48;
Passo 4
Vamos organizar o código em duas funções principais: a função fornecido pelo usuário, e uma função separada, por exemplo,
main
, onde vamos ler o valor de
gerarSenha
, que será responsável por criar a sequência de caracteres aleatórios.Passo 5
Dentro da função vezes. Em cada iteração, geramos um caractere aleatório conforme explicado e o adicionamos à string que representa a senha.
gerarSenha
, vamos usar um loop que se repete
Passo 6
Por fim, vamos imprimir a senha gerada na função
main
para que o usuário possa ver o resultado. Também é importante alocar memória suficiente para a string da senha, lembrando de reservar espaço para o caractere nulo \0
que indica o fim da string em C.Resposta
Aqui está o código completo em C que atende ao enunciado:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// Função para gerar a senha
void gerarSenha(char *senha, int N) {
for(int i = 0; i < N; i++) {
// Gera um número aleatório entre 48 e 126
senha[i] = (rand() % (126 - 48 + 1)) + 48;
}
// Adiciona o caractere nulo no final da string
senha[N] = '\0';
}
int main() {
int N;
// Inicializa o gerador de números aleatórios
srand(time(NULL));
printf("Digite o tamanho da senha: ");
scanf("%d", &N);
// Aloca espaço para a senha (+1 para o caractere nulo)
char senha[N + 1];
// Gera a senha
gerarSenha(senha, N);
// Exibe a senha gerada
printf("Senha gerada: %s\n", senha);
return 0;
}
Explicação Rápida:
- Incluímos as bibliotecas necessárias.
- Definimos a função
gerarSenha
que preenche a stringsenha
com caracteres aleatórios entre 48 e 126. - No
main
, inicializamos o gerador de números aleatórios comsrand(time(NULL))
. - Leemos o valor de
do usuário. - Alocamos uma string
senha
com tamanhoN + 1
para incluir o caractere nulo. - Chamamos a função
gerarSenha
para criar a senha. - Por fim, imprimimos a senha gerada.