Potřeboval bych pomoc s jedním úkolem v jazyce C (viz. zdroják níže). Tímto zakryptuju nějaký soubor a potřebuju zase napsat tzv. opačný program, který zase ty zašifrovaný soubory zpátky rozšifruje... Ale musí to být pomocí unie a nějak to nemůžu dát dokupy... Prý to je jednoduchý a během chvilky, ale asi jen pro toho, kdo to ovládá, tak snad tu někdo takový bude, byl bych vděčnej... Tady je zdroják:
#include <stdlib>
#include <stdio>
#define POCET_CISEL 5
#define POCET_BAJTU sizeof(long)*POCET_CISEL
/* unie - kryptovani souboru */
union sifra
{
char text[POCET_BAJTU];
long cisla[POCET_CISEL];
};
void vypln(char *, int);
int main(int argc, char *argv[])
{
union sifra data;
FILE *uvstup, *uvystup;
int pocet, i;
char znak;
if(argc == 3)
{
uvystup = fopen(argv[2], "w");
if((uvstup = fopen(argv[1], "r")) != NULL)
{
pocet = 0;
vypln(data.text, POCET_BAJTU);
do
{
data.text[pocet++] = getc(uvstup);
if(feof(uvstup)) data.text[--pocet] = 0;
if((pocet == POCET_BAJTU) || feof(uvstup))
{
i = 0;
do
fprintf(uvystup, "%+15i", data.cisla[i++]);
while(i<POCET_CISEL);
fprintf(uvystup, "\n");
pocet = 0;
vypln(data.text, POCET_BAJTU);
}
}
while(!feof(uvstup));
fclose(uvstup);
fclose(uvystup);
}
}
else
printf("Chybny pocet parametru.\n");
system("PAUSE");
return 0;
}
void vypln(char *bajty, int pocet)
{
int i;
for(i=0; i<pocet; i++)
bajty[i] = 0;
};