Witam. Mam problem z szyfrem Cezara. Odczytuje plik, deszyfruje go lub szyfruje bez problemu, tylko gdy przychodzi już do zapisu tablicy do pliku, nie nadpisuje pliku tylko dodaje tekst do pliku. Domyślam się że coś jest nie tak z fopen, ale nie mam pojecia jak go rozwiązac. próbowałem już wielu trybów otwarcia i nigdy nie działa tak jak powinno
#include <stdio.h>
#include <stdlib.h>
#define MAX 1024
int main()
{
FILE *plik = fopen("plik.txt", "r+w");
if (plik == NULL)
{
printf("Nie udalo sie otworzyc pliku!");
return 1;
}
int i;
int d=3;
char tab[MAX];
printf("Nacisnij 1 aby zapisac szyforwac, a 2 zeby odszyforwac");
char c = '\0';
while (c != '1' && c != '2')
{ c = getchar(); }
if (c == '1')
{
fgets(tab, MAX, plik);
for (i=0; i<MAX; i++)
{
if (tab[i]>='A' && tab[i]<='Z')
{
tab[i] = (tab[i] - 'A' + d) % 26 + 'A';
}
else if (tab[i]>='a' && tab[i]<='z')
{
tab[i] = (tab[i] - 'a' + d) % 26 + 'a';
}
}
printf("zaszyfrowany tekst to: %s\n\n",tab);
}
else if(c=='2')
{
fgets(tab, MAX, plik);
for (i=0; i<MAX; i++)
{
if (tab[i]>='A' && tab[i]<='Z')
{
tab[i] = (tab[i] - 'Z' - 3) % 26 + 'z';
}
else if (tab[i]>='a' && tab[i]<='z')
{
tab[i] = (tab[i] - 'z' - 3) % 26 + 'z';
}
}
printf("Odszyfrowany tekst to: %s\n\n",tab);
}
fprintf(plik,tab);
fclose(plik);
return 0;
}