Chiave.txtCiao a tutti!! Sto cercando di compilare un algoritmo che mi codifichi e decodifichi una stringa in base ad una chiave inserita come .txt sul desktop.. Premetto che ora sto solo provando se funzioni e appena funzionerà come deve cercherò di migliorarla creando una classe.. Ora però ho un problema con la funzione gets(): prima non avevo ancora le due procedure cripto e decripto funzionava come doveva; ora eseguendo mi salta la lettura della stringa. Sostituendola con cin funziona ma non legge gli spazi, prima addirittura non avevo nemmeno dichiarato stringa come array con dimensione MAX (l'avevo allocata dinamicamente) con:
char* stringa= new char;
gets(stringa);
...
...
puts(stringa);
e funzionava bene (non avevo un numero massimo di caratteri da poter inserire).
Ora però non funziona più.. Potere aiutarmiii, Grazie in anticipo. Ho allegato anche la chiave se volete provarlo.
codice:
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#define MAX 1000
void decripto(char*, const char* const);
void cripto(char*, const char* const );
using namespace std;
char alp[]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',' '};
int main(){
ifstream cinf("C:\\Users\\chris\\Desktop\\Chiave.txt", ios::in);
if (cinf.good()){
char ch[28];
cinf>>ch;
int risposta=0;
do{
puts("Vuoi criptare o decriptare"
"[1/2]");
cin>>risposta;
if (risposta==1){
char stringa[MAX];
gets(stringa);
cripto(stringa, ch);
puts(stringa);
}
else if(risposta==2){
char stringa[MAX];
gets(stringa),
decripto(stringa, ch);
puts(stringa);
}
else {
system("cls");
cout<<"Risposta non contemplata, Riprova.";
continue;
}
cout<<"Ti servo ancora?"<<endl;
}
while(risposta);
system("PAUSE");
return 0;
}
}
void cripto(char* str, const char* const chiave){
int cont=0 ;
do {
for(int i=0; i<27;i++){
if (*str==alp[i]){
*str=*(chiave+i);
cont++;
break;
}
}
str++;
}
while (*str);
}
void decripto(char* str, const char* const chiave){
int cont=0 ;
do {
for(int i=0; i<27;i++){
if (*str==*(chiave+i)){
*str=alp[i];
cont++;
break;
}
}
str++;
}
while (*str);
}