String Aleatoria [RESOLVIDO]

1. String Aleatoria [RESOLVIDO]

Salatiel Bairros
sbairros

(usa Ubuntu)

Enviado em 20/08/2013 - 11:28h

Olá, preciso fazer um programa que gere uma string aleatória entre 5 e 30 caracteres em C, mas não sei fazer isso. Funciona da mesma forma que os números? Alguém poderia me ajudar?
Obrigado.


  


2. MELHOR RESPOSTA

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 20/08/2013 - 12:43h

Olá,

Funciona da mesma forma que números.

Primeiro, você vai gerar um número aleatório de 5 a 30.

Depois, irá gerar os caracteres aleatórios. Para isso, construa um array com os caracteres permitidos, e use o número aleatório como posição no array.


char *validchars = "abcdefghijklmnopqrstuvwxiz";
char *novastr;

int str_len;

...

srand(time(null));

...

// tamanho da string
str_len = (rand() % 30 );

// se for menor que cinco, configura para ser maior que cinco
str_len += str_len < 5 ? 5 : 0;

...

// aloca memoria
novastr = (char*)malloc((str_len + 1)* sizeof(char));

...

for ( i = 0; i < str_len; i++ ) {
novastr[i] = validchars[ rand() % strlen(validchars) ];
novastr[i + 1] = 0x0;
}

...



Qualquer coisa posta denovo,
[]'s
Enzo Ferber



3. Re: String Aleatoria [RESOLVIDO]

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 20/08/2013 - 12:49h

Output:


enzo C $ gcc -o random_string random_string.c
enzo C $ ./random_string
[*] Tamanho: 26
[*] String : uqomionwfbczhdnvsbevwpwuzf
enzo C $ ./random_string
[*] Tamanho: 27
[*] String : anzsqmsldcxjyshtuwkedacguuv
enzo C $ ./random_string
[*] Tamanho: 5
[*] String : hhjnh
enzo C $ ./random_string
[*] Tamanho: 14
[*] String : hzijxwsztpjnip
enzo C $


Código:


// random_string.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#define MAX_STR_SIZE 30
#define MIN_STR_SIZE 5

int main ( void ) {
char *validchars = "abcdefghijklmnopqrstuvwxyz";
char *novastr;
register int i;
int str_len;

// inicia o contador aleatório
srand ( time(NULL ));

// novo tamanho
str_len = (rand() % MAX_STR_SIZE );

// checa tamanho
str_len += ( str_len < MIN_STR_SIZE ) ? MIN_STR_SIZE : 0;

// aloca memoria
novastr = ( char * ) malloc ( (str_len + 1) * sizeof(char));
if ( !novastr ){
printf("[*] Erro ao alocar memoria.\n" );
exit ( EXIT_FAILURE );
}

// gera string aleatória
for ( i = 0; i < str_len; i++ ) {
novastr[i] = validchars[ rand() % strlen(validchars) ];
novastr[i + 1] = 0x0;
}

// imprive informações
printf ( "[*] Tamanho: %d\n", str_len );
printf ( "[*] String : %s\n", novastr );

return 0;
}








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts