Witam, musze napisac projekt zaliczeniowy z jezyka C.
Postanowilem, ze napisze program szyfrujacy i odszyfrujacy jakis tekst.
Mam problem odnosnie szyfrowania , nie wiem czemu ale szyfruje mi nieraz jakies dziwne znaki na koncu tekstu, ktorych w ogolnie nie podalem. Rowniez mam problem ze switch i case w wyborze co chcemy zrobic: szyfrowac lub odszyfrowac, podejrzewam ze lezy tam blad w gets. Ponizej umieszczam kod.
#include <stdio.h>
#include <stdlib.h>
#define MAX 1000
char szyfruj(char tab[MAX], char tab2[MAX]){
int i,dl=0,kod,temp;
char zapis;
FILE *plik;
printf("KODOWANIE\n");
printf("Podaj Wyraz: ");
gets(tab);
printf("Twoj Wyraz: %s\n", tab);
for(i=0;i<MAX;i++){
if(tab[i]!='\0')
dl++;
else
break;
}
printf("dlugosc twojego wyrazu: %d\n",dl);
for(i=0;i<dl;i++){
kod=(char)tab[i]+3;
if(kod>=32 && kod<=126){
tab2[i]=(int)kod;
}
else if(kod>126){
temp=kod-95;
tab2[i]=(int)temp;
}
}
printf("Zaszyfrowany Wyraz: %s\n\n",tab2);
printf("Chcesz zapisac szyfr do pliku? T/N\n");
scanf("%s",&zapis);
if(zapis=='T' || zapis=='t'){
if ((plik=fopen("Zaszyfrowany.txt","w"))==NULL ){
printf("Nie mozna otworzyc pliku");
exit(1);
}
fprintf(plik,"%s",tab2);
printf("Zapisane pomyslnie\n");
fclose(plik);
}
return tab2[MAX];
}
char deszyfruj(char tab2[MAX],char tab3[MAX]){
int i,temp,kod,dl=0;
char zapis;
FILE *plik;
printf("ODKODOWANIE\n");
for(i=0;i<MAX;i++){
if(tab2[i]!='\0')
dl++;
else
break;
}
printf("dlugosc twojego wyrazu: %d\n",dl);
for(i=0;i<dl;i++){
kod=(char)tab2[i]-3;
if(kod>=32 && kod<=126){
tab3[i]=(int)kod;
}
else if(kod<32){
temp=kod+31;
tab3[i]=(int)temp;
}
}
printf("Odszyfrowany Wyraz: %s\n",tab3);
printf("Chcesz zapisac szyfr do pliku? T/N\n");
scanf("%s",&zapis);
if(zapis=='T' || zapis=='t'){
if ((plik=fopen("Odszyfrowany.txt","w"))==NULL ){
printf("Nie mozna otworzyc pliku");
exit(1);
}
fprintf(plik,"%s",tab3);
printf("Zapisane pomyslnie\n");
fclose(plik);
}
return tab3[MAX];
}
main() {
char tab[MAX], tab2[MAX], tab3[MAX];
system("Color 02");
szyfruj(tab,tab2);
deszyfruj(tab2,tab3);
system("PAUSE");
return 0;
}