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.
Obrigado.
Enviado em 20/08/2013 - 11:28h
Enviado em 20/08/2013 - 12:43h
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;
}
...
Enviado em 20/08/2013 - 12:49h
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 $
// 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;
}
Entre na sua conta para responder.