Avatar billede t_mons Nybegynder
28. februar 2005 - 20:31 Der er 9 kommentarer og
1 løsning

Random password

Hej

Skal lige siges at jeg er rookie, hvad angår C kode... :o)

men det det drejer sig om er at jeg vil kalde en funktion fra mit main program som så skal lave et random password på feks. 6 chars.

#include <stdio.h>

void generate_random_password(char* source, int length)
{
  int i;
  char s1[length+1];
 
  for(i=0; i < length; i++)
  {
    s1[i] = getRandomChar();
  }

  s1[length+1] = 0;
  strcpy(source, s1 );
}



char getRandomChar()
{
  //char c skal tilfældigt bleve tildelt en værdi imellem 0-9,    //a-z eller A-Z
  //return c;
}

int main()
{

    int len = 6;
    char newPassword[len];
    printf("From main: newPassword = %s \n", newPassword);
    generate_random_password(newPassword, len);
    printf("Back in main: newPassword = %s \n", newPassword);

    return 0;
}



NB:  den skal endelig ikke tildele det samme password hvergang man genstarter programmet...
Avatar billede arne_v Ekspert
28. februar 2005 - 20:39 #1
Prøv den her:

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

char *valid = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefgijklmnopqrstuvwxyz0123456789";

void genpw(char *buf, int len)
{
    int i,validlen;
    validlen = strlen(valid);
    for(i=0;i<len;i++)
    {
        buf[i] = valid[rand() % validlen];
    }
    buf[len] = '\0';
    return;
}

int main()
{
    int i;
    char pw[7];
    srand(time(NULL));
    for(i=0;i<10;i++)
    {
        genpw(pw, sizeof(pw)-1);
        printf("password=%s\n",pw);
    }
    return;
}
Avatar billede t_mons Nybegynder
28. februar 2005 - 20:46 #2
hej arne_v

Kan ikke teste det lige pt.  men er det standard C. 
det jeg tænker på er srand(time(NULL))
skal nemlig prøve at afvikle det på unix (hvis det har nogen indvirkning)  :o)
Avatar billede arne_v Ekspert
28. februar 2005 - 20:52 #3
Så vidt jeg ved er det standard ANSI C.

Og jeg har testet med gcc (ganske vist på windows).
Avatar billede t_mons Nybegynder
28. februar 2005 - 21:29 #4
okay prøver imorgen tidlig...
Avatar billede t_mons Nybegynder
01. marts 2005 - 09:02 #5
Hej Arne

Du er sku den sejeste...  (er der noget du ikke kan... HE HE HE)

sender du lige et svar !!!

kan du ikke sætte nogle kommentar, så jeg ved hvad de forskellige linjer gør..  det ville være godt..

mvh
Thomas
Avatar billede t_mons Nybegynder
01. marts 2005 - 09:13 #6
især disse linier

buf[i] = valid[rand() % validlen]; 

srand(time(NULL));

hvad er forskellen på rand() og srand()
Avatar billede arne_v Ekspert
01. marts 2005 - 09:37 #7
rand()

returnerer et tilfældigt tal

srand(time(NULL));

initierer random generatoren så du ikke får de samme tal hver gang
Avatar billede arne_v Ekspert
01. marts 2005 - 09:37 #8
svar
Avatar billede t_mons Nybegynder
01. marts 2005 - 09:44 #9
takker
Avatar billede arne_v Ekspert
01. marts 2005 - 09:47 #10
Og der er skam meget jeg ikke kan
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester