#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char** argv)
{
// déclaration des variables
char alphabet[] = "abcdefghijklmnopqrstuvwxyz";
char pwd[100];
char first_char, current_char, next_char;
int fini = 0;
int i;
int size_alph;
int size_pwd;
int position;
sprintf(pwd,"%c",alphabet[0]); // password de départ
first_char = alphabet[0];
size_alph = strlen(alphabet);
size_pwd = strlen(pwd);
while(!fini)
{
printf("%s\n", pwd);
position = size_pwd - 1; // on place le focus sur le dernier caractère
while(pwd[position] == alphabet[size_alph-1]) position--; // tant que l'on a le dernier caractère, on remonte
// Si on a trop remonté, on crée un nouveau caractère car la chaine est de la forme "z", "zz", "zzz", ...
if(position<0)
{
pwd[size_pwd] = first_char; // ajout d'un char
for(i=0 ; i < size_pwd ; i++) pwd[i] = first_char; // on remet tout à zéro (inutile pour le dernier char déjà initialisé) :
size_pwd += 1; // on actualise la taille
pwd[size_pwd] = '\0';
}
else
{
// sinon on incrémente le caractère sur lequel on a le focus
current_char = pwd[position];
i=0;
next_char = 0;
// on cherche la lettre suivante dans l'alphabet
while(!next_char)
{
if(alphabet[i] == current_char) next_char = alphabet[i+1];
i++;
}
pwd[position] = next_char; // on met à jour la caractère
// tous les caractères qui suivent le caractère changé doivent être remis à zéro
for(i=position+1 ; i < size_pwd ; i++) pwd[i] = alphabet[0];
}
}
return 0;
}