Chaine de caracteres aléatoire

Signaler
Messages postés
654
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
10 février 2009
-
Messages postés
2
Date d'inscription
jeudi 6 avril 2006
Statut
Membre
Dernière intervention
21 février 2009
-
Bon voila je voudrai simplement que ce code retourne une chaine de caracteres aléatoire je comprend pas ce qui cloche nlors de la compilation ça me marque
error C2228: left of '.substr' must have class/struct/union type
(je compile avec VC++)
char *lrand(int num) {
   char resultat[64];
   srand(time(0));
   for(int i=0; i<num; i++) {
        int numero = (1 + rand() % 26);
        char *lettre = ("abcdefghijklmnopqrstuvwxyz".substr(numero,numero+1));
      	sprintf(resultat,"%s%s",resultat,lettre);
   }
   return (char *) resultat;
}

merci d'avance !
win

6 réponses

Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
ca genere une chaine aleatoire (sans chiffres)

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

void RandomString(char *str, size_t n)
{
char c;
int i;
for(i=0;i<n;i++)
{
do
{
c=rand() % 'z';
}while( !(( 'A'<=c && c<='Z' ) || ( 'a'<=c && c<='z' )) );
str[i]=c;
}
str[i]=0;
}

main()
{
srand( time(NULL) );
char str[20];

for(;;)
{
RandomString(str,(sizeof str)-1);
puts(str);
fflush(stdout);
getchar();
}

return 0;
}
Messages postés
252
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
25 avril 2011

Si tu veux faire une chaîne aléatoire, il te suffit de tirer des nombres entre 0 et 255
rand() % 256
et de les affecter à chaque élément de la chaîne sans oublier le 0 terminal

const char* n'est pas une structure ni une class donc pas de fonction membre

ta fonction retourne une adresse et la valeur contenue à cette adresse peut être modifiée par le programme indépendemment de ta volonté.
Je te conseille donc de mettre un char* ou char** en paramètre à ta fonction et de renseigner les valeurs à l'adresse désirée à l'appel de fonction.

Bonne prog

Chouchou
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
ben oui, winwarrior le prend pas mal mais ton code est completement faux
passe la chaine en parametre comme Chouchou182 à dit au lieu de retourner une chaine allouée sur la pile

("abcdefghijklmnopqrstuvwxyz".substr(numero,numero+1)

> ou ta vu que ca existait un truc pareil ? c'est carrement un parse error...

le srand(time(0)); tu le fait une fois au debut du prog, ca suffit et comme c'est du c, met plutot srand(time(NULL));
Messages postés
654
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
10 février 2009
1
Ui mais je ne veux pas mettre de caracts spéciaux juste les lettres de A a Z (maj ou pas c pas grave)
win
Messages postés
654
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
10 février 2009
1
Ok ça marche nikkel merci =)
win
Messages postés
2
Date d'inscription
jeudi 6 avril 2006
Statut
Membre
Dernière intervention
21 février 2009

Bonjour,
J'ai un pogramme mastermind a développer en java et je souhaite savoir comment utiliser la fontion rand en java
String[]tabchoix=new String[5];// tableau des valeurs initiales
String []choix_ordi=new String[3];//tableau de combi trié de façon aléatoire
  tabchoix[0]="Jaune";
  tabchoix[1]="Vert";
  tabchoix[2]="Bleu";
  tabchoix[3]="Rouge";
  tabchoix[4]="Blanc";
je voudrais ke l'ordi choisisse de façon aléatoire 3 couleurs parmi celles contenues dans le tableau tabchoix[]  et kil les sotcke ensuite dans choix_ordi[].

Nadine