removido
(usa Nenhuma)
Enviado em 02/11/2010 - 16:16h
Pessoal, estou com este problema, o algoritimo retorna 1 caracter a mais após a criptografia, e quando vou fazer o processo inverso, ou seja, a descriptografia, ele aparece 2 caracter a mais no arquivo. Ajudem por favor. o algoritmo é o seguinte:
#include <stdio.h>
#include <stdlib.h>
int main()
{
// declarando as variáveis
unsigned long int i=0;
char ch;
char arq1[20],arq2[20];
FILE *fo,*fd; // fo = arquivo origem e fd = arquivo destino
printf("********************************************************\n");
printf("\n");
printf(" C R I P T O G R A F I A \n");
printf("\n");
printf("********************************************************\n");
printf("\nSugestao: coloque o arquivo na mesma pasta do programa\n");
printf("\n o arquivo deve ser digitado com a extensao\n\n\n");
printf("1 - DIGITE O NOME DO ARQUIVO FONTE: ");
gets(arq1); // leitura de string
printf("2 - DIGITE O NOME DO ARQUIVO DE DESTINO: ");
gets(arq2); // leitura de string
fo=fopen(arq1,"r"); // abrindo o arquivo origem como leitura
fd=fopen(arq2,"w"); // abrindo o arquivo destino como gravação
if(fo==NULL) // condição se o arquivo origem não localizado
{
printf("\nARQUIVO FONTE NAO LOCALIZADO OU DIGITADO INCORRETAMENTE!!!\n\n");
system ("pause");
return 1;
}
while(!feof(fo)) // verificando se o arquivo foi lido, retornando verdadeiro
{
ch=getc(fo); // variável "ch" vai receber a leitura da string "fo"
ch=~((ch^i)); // criptografando o conteudo da variável "ch" usando o operador de negociação bit a bit
i+=2; // atribuição de valor a variável "i"
if(i==100000) // condição para variável "i"
{i=0; // variável "i" receberá o valor "zero" caso passo acima seja verdade
}
putc(ch,fd); // escrevendo no arquivo destino o valor da variário "ch"
}
fclose(fo); // fechando o arquivo origem
fclose(fd); // fechando o arquivo destino
printf("\nCRIPTOGRAFIA REALIZADA COM SUCESSO!!!\n");
printf("\nABRA O ARQUIVO DESTINO PARA VER O RESULTADO!!!\n\n");
system ("pause");
return 0;
}
OBS.: O arquivo de origem é um txt com o conteudo "Criptografia", sem linhas, somente a palavra.