Générateur de code aléatoire.
Aiden Pearce
Messages postés
48
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Salut tout le monde,
est-ce que quelqu'un pourrait me procurer un code source en langage C qui pourrait générer un code aléatoire de 8 chiffres en m'expliquant comment ça marche ?
Je sais ce que vous penserez mais c'est parce que je ne comprends rien du tout et j'ai besoin de ce code source!
Merci !
est-ce que quelqu'un pourrait me procurer un code source en langage C qui pourrait générer un code aléatoire de 8 chiffres en m'expliquant comment ça marche ?
Je sais ce que vous penserez mais c'est parce que je ne comprends rien du tout et j'ai besoin de ce code source!
Merci !
A voir également:
- Générateur de code aléatoire.
- Code ascii - Guide
- Generateur mot de passe - Télécharger - Sécurité
- Code de déverrouillage oublié - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
2 réponses
Bonjour,
Voici pour toi, j'ai commenté pour que tu comprennes mieux.
Cdlt,
Voici pour toi, j'ai commenté pour que tu comprennes mieux.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
/*
** Retourne une chaîne random :
** - lenStr : taille de la chaine retournee
** - tabChars : caractères utilisé pour le random
*/
char *randomString(int lenStr, char *tabChars)
{
char *str;
int i;
int lenTabChars;
lenTabChars = strlen(tabChars);
// Malloc de la chaine de caractère (8 + 1) cases
str = malloc((lenStr + 1) * sizeof(char));
for (i = 0; i < lenStr; i++) {
str[i] = tabChars[(rand() % lenTabChars)];
/*
** Chaque case de la chaine équivaut à tabChars[NOMBRE_RANDOM % 10]
** ie une case de tabChars au hasard
}
return (str);
}
int main(int ac, char **av)
{
srand(time(0)); // Inialisation du random
printf("%s\n", randomString(8, "0123456789"));
return (0);
}
Cdlt,
Salut Julien,
C'est malin de procéder comme cela.
Deux remarques :
Il faut terminer la chaîne après la boucle for, avec
En C, je pense que la façon adéquate de renvoyer une chaîne avec une fonction n'est pas return, mais l'utilisation d'un chaîne passée en paramètre. Donc, ajouter un 3ème paramètre à ta fonction afin que l'espace mémoire dans lequel se trouve le résultat persiste. Là, dans ton implémentation, la mémoire pointée par str n'est allouée que pendant l'exécution de la fonction randomString. Après, tu n'as aucune garantie que cet espace mémoire ne soit pas occupé par autre chose, réclamé par un autre processus, etc. Laisse à la fonction appelante le soin d'allouer l'espace mémoire dans lequel randomString va stocker le résultat. Il sera de la responsabilité de la fonction appelante de libérer cet espace ou d'en faire ce que bon lui semble.
Dal
C'est malin de procéder comme cela.
Deux remarques :
Il faut terminer la chaîne après la boucle for, avec
str[lenStr] = '\0';, selon ma compréhension.
En C, je pense que la façon adéquate de renvoyer une chaîne avec une fonction n'est pas return, mais l'utilisation d'un chaîne passée en paramètre. Donc, ajouter un 3ème paramètre à ta fonction afin que l'espace mémoire dans lequel se trouve le résultat persiste. Là, dans ton implémentation, la mémoire pointée par str n'est allouée que pendant l'exécution de la fonction randomString. Après, tu n'as aucune garantie que cet espace mémoire ne soit pas occupé par autre chose, réclamé par un autre processus, etc. Laisse à la fonction appelante le soin d'allouer l'espace mémoire dans lequel randomString va stocker le résultat. Il sera de la responsabilité de la fonction appelante de libérer cet espace ou d'en faire ce que bon lui semble.
Dal
En effet, j'ai repris un ancien code et j'ai supprimé le '\0' final par négligence.
Pour toutes tes autres remarques, c'est vrai et mieux de faire comme tu dis.
Mais j'ai pas envie de m'embêter à poster un code "nickel" à chacun de mes post, tant que la question est bien traitée.
Par exemple je préfère mettre 0 au lieu de NULL car je gagne 3 caractères.
(Énorme économie, n'est-ce pas ?)
Pour toutes tes autres remarques, c'est vrai et mieux de faire comme tu dis.
Mais j'ai pas envie de m'embêter à poster un code "nickel" à chacun de mes post, tant que la question est bien traitée.
Par exemple je préfère mettre 0 au lieu de NULL car je gagne 3 caractères.
(Énorme économie, n'est-ce pas ?)
juliencolin54:
lol @ "économie"
plus sérieusement, comme une grande majorité des personnes posant des questions ici sont des gens qui se forment au langage C, et que les posts sur les forums CCM sont bien référencés par les moteurs de recherche, je crois qu'au contraire on devrait avoir le souci de poster un code aussi rigoureux et exact que possible (dès lors qu'on poste un code)
comme on n'est pas parfait, mais qu'on est une communauté, le peer-review joue aussi et permet à la fois d'améliorer la qualité des contributions et de faire progresser tout le monde, et pas seulement les personnes qui postent les questions.
Aiden Pearce:
En reprenant le code astucieux de Julien, et en y appliquant les modifications proposées ci-dessus (ici et là), cela serait bien que tu nous postes le code final en répondant à ton propre sujet.
Ainsi, on saura si tu as compris (on ne va pas tout faire pour toi tout de même), et on aura un code propre à proposer en réponse à ta question dans ce fil.
Dal
lol @ "économie"
plus sérieusement, comme une grande majorité des personnes posant des questions ici sont des gens qui se forment au langage C, et que les posts sur les forums CCM sont bien référencés par les moteurs de recherche, je crois qu'au contraire on devrait avoir le souci de poster un code aussi rigoureux et exact que possible (dès lors qu'on poste un code)
comme on n'est pas parfait, mais qu'on est une communauté, le peer-review joue aussi et permet à la fois d'améliorer la qualité des contributions et de faire progresser tout le monde, et pas seulement les personnes qui postent les questions.
Aiden Pearce:
En reprenant le code astucieux de Julien, et en y appliquant les modifications proposées ci-dessus (ici et là), cela serait bien que tu nous postes le code final en répondant à ton propre sujet.
Ainsi, on saura si tu as compris (on ne va pas tout faire pour toi tout de même), et on aura un code propre à proposer en réponse à ta question dans ce fil.
Dal