Я пишу программу шифрования XOR, который отлично работает во время шифрования, но при расшифровке Как читать прошлый EOF из getc?
голец ca2 = fgetc (е);
застревает в одной точке и не расшифровка не происходит после того, что моя догадка о задаче (зашифрованный файл содержит все виды символов), как только fgetc достигает EOF знак, который может присутствовать до фактического конца файла он застрял там и перестает читать следующие символы.
это какое-то ограничение getc()? вот мой мусор код
int get_file_size(char filename[])
{
FILE *p_file = NULL;
p_file = fopen(filename,"rb");
fseek(p_file,0,SEEK_END);
int size = ftell(p_file);
fclose(p_file);
return size;
}
int endec(char filename[],char psdw[])
{
FILE *f;
int hashed=0,ed=0;
int inphash=inhash(psdw);
inphash=inphash%50;
f=fopen(filename,"r");
if(f==NULL)
printf("failed");
char temps[999999];
long int crs=0,j=0;
int filesz=get_file_size(filename);
printf("file size = %d\n\n",filesz);
while(1){
inphash=inphash+2;
char ca=(char)inphash;
char ca2=fgetc(f);
printf("%c\n",ca2);
if(crs>=filesz)
break;
temps[crs]= ca2^ca;
crs++;
}
fclose(f);
printf("%d",strlen(temps));
FILE *fp;
fp=fopen(filename,"wt");
for(j=0;j<crs;j++){
putc (temps[j] , fp);
printf("%c",temps[j]);
}
fclose(fp);
}