codice:
#include <stdio.h>
#include <stdlib.h>
#define MAX 1024
void cifra();
void decifra();
void open_file();
char alfa[]= {'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'};
char ct[MAX], plain[MAX], key[26], path[50], car;
int i, j, k, max, risp, n;
FILE *fd;
main()
{
printf("\n cosa vuoi fare?? 1. Cifra - 2. Decifra\n");
scanf("%d",&risp);
open_file();
switch(risp)
{
case 1: cifra(); break;
case 2: decifra(); break;
default: printf("\n hai inserito un valore non valido!"); exit(1);
}
return 0;
}
void open_file()
{
printf("inserisci chiave:\t");
gets(key);
printf("inserisci path del file:\t");
gets(path);
fd=fopen(path,"rw");
if(fd==NULL);
{
perror("\nErrore nell'apertura del file");
exit(1);
}
}
void cifra()
{
if(!EOF(fd))
{
n=fgetc(fd);
i++;
}
max=i;
for(i=0;i<max;i++)
{
for(k=0;k<26;k++)
{
fscanf(fd,"%c",&car);
if(car==alfa[k])
{
j=i;
ct[i]=key[j];
}
if(car==' ');
ct[i]='_';
}
}
for(i=0;i<max;i++)
printf("%c",ct[i]);
}
void decifra()
{
if(!EOF(fd))
{
n=fgetc(fd);
i++;
}
max=i;
for(i=0;i<max;i++)
{
for(k=0;k<26;k++)
{
fscanf(fd, "%c",&car);
if(car==key[j])
{
k=j;
plain[i]=alfa[k];
}
if(car=='_');
ct[i]=' ';
}
}
for(i=0;i<max;i++)
printf("%c",plain[i]);
}