Faça um código em C para gerar uma sequência de N caracteres aleatórios da tabela ASCII entre 48 e 126 para ser utilizado em uma senha. Leia N 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 N 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 main, onde vamos ler o valor de N fornecido pelo usuário, e uma função separada, por exemplo, gerarSenha, que será responsável por criar a sequência de caracteres aleatórios.

Passo 5

Dentro da função gerarSenha, vamos usar um loop que se repete N vezes. Em cada iteração, geramos um caractere aleatório conforme explicado e o adicionamos à string que representa a senha.

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:
  1. Incluímos as bibliotecas necessárias.
  2. Definimos a função gerarSenha que preenche a string senha com caracteres aleatórios entre 48 e 126.
  3. No main, inicializamos o gerador de números aleatórios com srand(time(NULL)).
  4. Leemos o valor de N do usuário.
  5. Alocamos uma string senha com tamanho N + 1 para incluir o caractere nulo.
  6. Chamamos a função gerarSenha para criar a senha.
  7. Por fim, imprimimos a senha gerada.

Exercícios relacionados