Random String Problem



  • Hi, ich hab grad Probiert, mir ne Funktion für nen 40-stelligen zufallsString zu schreiben un weiß jetz nich, wie ich in der for-Schleife die chars zum string hinzufüge... mit strcat() ging nicht, da "char * randomstring" nur n Satanskreuz wiedergibt -.- un bei sprintf_s nur 1 char in randomstring[] verbleibt...
    bitte um Hilfe, hier der Code 🙂

    void RandomString()
    {
    	char chars[37] = "ABCDEFGHIJKLMNOPQRTSUVWXYZ0123456789";
    	char randchar;
    	char randomstring[41] = "\0";
    	int count;
    
    	srand((unsigned)time(NULL));
    
    	for(count=0;count<40;count++)
    	{
    		randchar = chars[rand()%36];
    		//randomstring<<randchar; //???
    	}
    }
    

    Gruß



  • Hä? Wir wollen dir doch helfen, also streng dich an und formuliere wenigstens eine verständliche Frage.

    void RandomString() 
    { 
        char chars[37] = "ABCDEFGHIJKLMNOPQRTSUVWXYZ0123456789"; 
        char randchar; 
        char randomstring[41]; 
        int count; 
    
        srand((unsigned)time(NULL)); 
    
        for(count=0;count<40;count++) 
        { 
            randchar = chars[rand()%36]; 
            randomstring[count] = randchar;
        } 
    }
    


  • äähm danke, du has meine frage schon beantwortet ohne dass ich sie gestellt hab 😃



  • btw:

    const int RANDOM_STRING_LENGTH = 40;
    void RandomString() 
    { 
        const char chars[] = "ABCDEFGHIJKLMNOPQRTSUVWXYZ0123456789"; 
        char randomstring[RANDOM_STRING_LENGTH+1];
    
    //    srand((unsigned)time(NULL));
    
        for(int count=0; count < RANDOM_STRING_LENGTH; count++)
        { 
            char randchar = chars[rand() % (sizeof(chars)/sizeof(*chars))];
            randomstring[count] = randchar;
        }
    
       randomstring[RANDOM_STRING_LENGTH] = '\0';
    }
    

    bb

    edit: 36 durch länge ersetzt



  • unskilled schrieb:

    btw:

    const int RANDOM_STRING_LENGTH = 40;
    void RandomString() 
    { 
        const char chars[] = "ABCDEFGHIJKLMNOPQRTSUVWXYZ0123456789"; 
        char randomstring[RANDOM_STRING_LENGTH+1];
    
    //    srand((unsigned)time(NULL));
    
        for(int count=0; count < RANDOM_STRING_LENGTH; count++)
        { 
            char randchar = chars[rand()%36]; 
            randomstring[count] = randchar;
        }
    
       randomstring[RANDOM_STRING_LENGTH] = '\0';
    }
    

    bb

    Na warum nicht gleich mit strings 😉 :

    void RandomString( )
    {
    	const std::string chars( "ABCDEFGHIJKLMNOPQRTSUVWXYZ0123456789" );
    	std::string randomstring;
    
    	for( unsigned int count = 0; count != chars.size( ); ++count )
    	{
    		randomstring.push_back( chars[rand( ) % 36] );
    	}
    }
    


  • wieso braucht man hier denn strings? Oo hier seh ich echt nich so die vorteile von string ggnüber char...
    hatte btw noch vergessen, die 36 zu ersetzen - hab ich mal nachgeholt...

    bb



  • Naja, mit strings zu arbeiten finde ich schöner als solche Sachen zu sehen:

    const int RANDOM_STRING_LENGTH = 40;
    


  • Kóyaánasqatsi schrieb:

    Naja, mit strings zu arbeiten finde ich schöner als solche Sachen zu sehen:

    const int RANDOM_STRING_LENGTH = 40;
    

    wenns zur compilezeit bekannt ist - wieso nicht?



  • unskilled schrieb:

    Kóyaánasqatsi schrieb:

    Naja, mit strings zu arbeiten finde ich schöner als solche Sachen zu sehen:

    const int RANDOM_STRING_LENGTH = 40;
    

    wenns zur compilezeit bekannt ist - wieso nicht?

    Weil es, mir persönlich, zu undynamisch ist.



  • Dann aber bitte auch mit:

    std::string chars;
        for(int i = 0; i < 255; i++) 
            if (std::isgraph(i)) chars.push_back((char)(i));
    

    Sonst haben wir ja keine vernünftigen Zeichen. 😉


Anmelden zum Antworten