Pular para o conteúdo

String Aleatoria [RESOLVIDO]

Responder tópico
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
  • Denunciar
  • Indicar

1. String Aleatoria [RESOLVIDO]

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.

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

2. Re: String Aleatoria [RESOLVIDO]

Melhor resposta

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]

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;
}


Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Responder tópico

Entre na sua conta para responder.

Fazer login para responder