Avatar billede vanggaard Nybegynder
24. november 2000 - 21:25 Der er 4 kommentarer og
1 løsning

Random-string

Hej
Hvordan laver jeg en random-string ???
Er der en funktion i C som returner en random-string eller skal man selv skrive en, og i såfald er der en som har lidt code ??

På forhånd tak
Vanggaard
Avatar billede lbs Nybegynder
25. november 2000 - 02:46 #1
jeg sad og kedede mig fordi jeg missede min bus.. nu tog det for lang tid så jeg missede også den næste..
men her er koden.....
Du skriver godtnok C, det her virker kun i c++ fordi jeg bruger iostream.h, men det kan du jo bare fjerne, hvis det er c du skal bruge.
god fornøjelse

#include \"iostream.h\"
#include \"stdlib.h\"
#include \"time.h\"

#define noOfChars 26
#define totalChars noOfChars * 2 + 10
//26 characters gange to, plus 10 tal

char getRandomChar();
void getRandomString(char* buff,int buffLength);

int main(int argc, char* tis[]){
  srand(time(0));
  int strenglaengde = 200;// bliver på en char mindre! strenge nultermineres i c++
  char minRandomStreng[strenglaengde];
  getRandomString( minRandomStreng, strenglaengde );

  cout << endl << minRandomStreng << endl << endl;

}


void getRandomString(char* buff,int buffLength){
  for(int i = 0; i < buffLength; i++){
    buff[i] = getRandomChar();
  }
  buff[buffLength-1] = \'\\0\';
}

char getRandomChar(){
  unsigned int retVal = (unsigned int) ((1.0 / RAND_MAX) * rand() * totalChars);
  if( retVal < noOfChars){
    retVal = \'a\' + retVal;
  }else if( retVal < noOfChars * 2){
    retVal = \'A\' + retVal - noOfChars;
  }else{
    retVal = \'0\' + retVal - noOfChars * 2;
  }
  return retVal;
}
Avatar billede stringbuffer Nybegynder
25. november 2000 - 09:51 #2
Her er en, jeg bruger:

char randChar()
//returnerer en tilfældigt tegn (A-Za-z0-9)
{
    switch(random(3))
    {
        case 0:
            return random(26) + 65;
        case 1:
            return random(26) + 97;
        default:
            return random(10) + 48;
    }
}

void main()
{
    int strLng = 30;

    char buffer[strLng+1];
    randomize();
    //undgå atfå samme sekvens af tilfældige tegn
    //hver gang du kører programmet
    for (int i=0; i<=strLng; i++)
      buffer[i] = randChar()
    buffer[strLng+1] = 0;

    cout << \"Her er min flotte tilfældige streng: \" << buffer;
}   

simpelt, ikke?
Avatar billede lbs Nybegynder
25. november 2000 - 15:27 #3
stringbuffer din vil kun virke hvis den kører på en computer med samme charset som den du bruger :)
Avatar billede vanggaard Nybegynder
25. november 2000 - 20:16 #4
lbs tusind tak for hjælpen. Det var nemt at skrive om til noget C kode som jeg kunne bruge.

- Mads
PS: Undskyld at du kom forsent til bussen.
Avatar billede lbs Nybegynder
25. november 2000 - 22:16 #5
selvtak :)
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