Hej, mam pewien problem w kodzie. Dopiero niedawno zaczęłam przygodę z programowaniem (z racji fanaberii studiowania informatyki) więc jestem świeżakiem.
Mój problem dotyczy dekodowania wiadomości zapisanej w pliku. Program koduje wiadomość, jednakże jeśli chodzi o dekodowanie wczytuje plik przed zaszyfrowaniem (co daje nowe zaszyfrowanie z przesunięciem w drugą stronę zamiast rozszyfrowania pliku po). Wiem, że wczytanie pliku powinno być w innym miejscu, jednakże nic nie przychodzi mi do głowy :C Gdzie popełniam błąd?
P.S. Jakie książki polecacie (bądź dobre strony) do nauki C i C++?
#include<stdio.h>
#include <stdlib.h>
int main()
{
int a;
char tab[100];
char komenda;
printf("Aby zakodowac wcisnij (1), w celu odkodowania wcisnij (2)\n");
scanf("%s", &komenda);
printf("Podaj klucz przesuniecia: ");
scanf("%d", &a);
FILE * fp;
fp = fopen ("przed.txt", "r");
fscanf(fp, "%s", tab);
fclose(fp);
for(int i=0;i<100;i++)
{
switch(komenda)
{
case '1':
if(tab[i]>=32 && tab[i]<=122-a) {
tab[i]=int(tab[i])+a;
}
else if(tab[i]>=122 && tab[i]<=32) {
tab[i]=int(tab[i])-91+a;
}
break;
case '2':
if(tab[i]>=32 && tab[i]<=122-a) {
tab[i]=int(tab[i])-a;
}
else if(tab[i]>=122+a && tab[i]>=32) {
tab[i]=int(tab[i])+91-a;
}
break;
}
}
printf("%s", tab);
FILE *fd;
fd=fopen ("po.txt", "a");
fprintf (fd, "%s", tab);
fclose (fd);
return 0;
}