Ciao a tutti ragazzi, allora ora vi spiego il mio problema..
cercavo in rete un generatore di tutti i caratteri sulla tastiera e dopo averli generati, di salvarli su un file .txt, qualcosa ho trovato ma mi sono impicciato all'ultimo..quando vado ad eseguire il programma, non mi da tutte le combinazioni possibili, ma solo il risultato..poi capirete vedendo il programma..
il programma è scritto in C++ ed è questo:
codice:
#include <stdio.h>
#include <fstream>
using namespace std;
//note: Eliminare se si inietta = ESSI
//note: Sostituire se si inietta = SSSI
int main ()
{
int i,j,k=0,l,ch,sv=128,cd1,cd2=0;
char c[127];
char b[127];
char a,ct;
/*(ESSI) {------------------###Lettura password###-------------------------*/
printf("Inserisci password max di 127 char\n");/*mettere controller 127 caratteri*/
for(i=0;i<127&&(c[i-1]!=10);++i) c[i]=getchar();
i=i-1;
/*(ESSI) }------------------######################-------------------------*/
//variabili bloccate: i
printf("Si conosce il numero esatto di caratteri della password? [s] [n]");ct=getchar();
while (cd2==0)
{
if (ct==110||ct==78) /*n*/
{
while(sv>127||sv<i) /*(SSSI) {(22,37)-(22,43)} ##||sv<1##*/
{
printf("Inserire la massima lunghezza possibile della password (min 1,max 127), se sconosciuta scrivere 127: ");
scanf("%d",&sv);printf("\n");
if (sv>127||sv<i) printf("\nErrore, numero di caratteri inserito troppo grande oppure troppo piccolo\n"); /*(SSSI) {(26,43)-(26,49)} ##||sv<1##*/
};
cd2=1;
};
if (ct==115||ct==83) /*s*/
{
while(sv!=i) /*(SSSI) {(32,31)-(32,36)} ##sv>127||sv<1##*/
{
printf("Inserire la lunghezza della password (min 1,max 127): ");
scanf("%d",&sv);printf("\n");
if (sv!=i) printf("\nErrore, numero di caratteri inserito troppo grande oppure troppo piccolo\n"); /*(SSSI) {(36,37)-(36,42)} ##sv>127||sv<1##*/
};
cd2=1;
};
if (ct!=115&&ct!=83&&ct!=110&&ct!=78)
{
printf("Errore di digitazione, si conosce il numero esatto di caratteri della password? [s] [n]");ct=getchar();ct=getchar();
};
}; cd2=0;
//variabili bloccate: sv
if (ct==110||ct==78)
{
for(ch=1;ch<=sv&&cd2==0;++ch)
//variabili bloccate: ch
{
for(l=0;l<=(ch-1);++l) b[l]=32;
while (k<ch&&cd2==0)
{
k=0;
/*(SSSI) {------------------####Controllo pswd####-------------------------*/
cd1=0;
for(l=0;l<(i);++l)
{
if (l>ch) cd1=0; else {if (c[l]==b[l]) ++cd1;};
};
if (cd1>=(i)) cd2=1;
else {for(j=0;j<ch;++j) printf("%c",b[j]);printf(" no\n");};/*<= Eliminare per aumentare di ~100 volte la velocità di esecuzione*/
/*(SSSI) }------------------######################-------------------------*/
//variabili sbloccate: i
while (b[ch-k-1]>=126&&cd2==0) {b[ch-k-1]=32;++k;};
if (k<9&&cd2==0) ++b[ch-k-1];
};
printf("Password \212 di %d caratteri \n",ch);/*giusto per aver un resoconto se si elimina riga 63*/
};
};
if (ct==115||ct==83)
{
for(l=0;l<=(sv-1);++l) b[l]=32;
while (k<(sv)&&cd2==0)
{
k=0;
/*(SSSI) {------------------####Controllo pswd####-------------------------*/
cd1=0;
for(l=0;l<(i);++l)
{
if (c[l]==b[l]) ++cd1;
};
if (cd1>=(i)) cd2=1;
else {for(j=0;j<sv;++j) printf("%c",b[j]);printf(" no\n");};/*<= Eliminare per aumentare di ~100 volte la velocità di esecuzione*/
/*(SSSI) }------------------######################-------------------------*/
//variabili sbloccate: i
while (b[sv-k-1]>=126&&cd2==0) {b[sv-k-1]=32;++k;};
if (k<128&&cd2==0) ++b[sv-k-1];
};
};
if(cd2==1){printf("La password \212: "); for(j=0;j<sv;++j) printf("%c",b[j]);}
else{printf("La password non è nel range controllato dal programma");};
//-----------------------------salvataggio file------------------------------------
{
ofstream file;
file.open("c:\\prova.txt");
file <<"la password e' "<<b;
file.close();
}
a=getchar();a=getchar();
return 0;
}
//Errori noti: se durante la lettura di ct, si inserisce "ss","sn","nn",... si ha un errore.
//Se nella lettura temporanea della password si inseriscono più di 127 caratteri si possono avere errori (dovrebbero essere poi legati a ct).
//Se nella lettura temporanea della password si inseriscono caratteri speciali al di fuori di quelli compresi tra ASCII 32 - ASCII 126 (es. é) il numero di caratteri riconosciuti dal programma cresce di 1...
spero almeno voi mi sappiate dare una mano..grazie in anticipo