Olá a todos,
Estou tendo certa dificuldade em fazer algumas funções do meu código funcionarem corretamente e por isso peço ajuda.
A função "erro" não está aguardando digitação de caractere pra prosseguir pra condicional, e a função "principal", quando é chamada pela segunda vez também não aguarda a digitação de caractere pra seguir com a condicional.
Pensei que poderia ser o fato da variável já conter informação, mas não sei como reiniciar uma variável do tipo char e também depois de algumas tentativas comecei a acreditar que não é esse o problema, mas também não consigo identificar.
Apenas para ilustrar situação: Trata-se de um trabalho para a faculdade baseado em criptografia. Por isso implementei a cifra de Cesar por ser a mais fácil de computacionar. Para o programa utilizei funções que leem e escrevem em arquivo texto pra que eu pudesse capturar os caracteres um a um sem precisar converter string pra char e aplicar a cifragem.
Desde já agradeço o auxílio.
[code=C]
#include
#include
#include
FILE *arc;
char txt, option;
int key=0, txtcode, txtdecode;
int codifica ();
int decodifica ();
int principal ();
int erro ();
int sai ();
main()
{
printf("\tBem vindo ao simulador de criptografia\n");
principal ();
return 0;
}
int codifica ()
{
arc=fopen("cripto.txt","w");
printf("\nDigite um numero para senha: ");
scanf("%d",&key);
printf("\nDigite o texto a ser criptografrado.\n");
while((txt=getche())!='\r')
{
txtcode=(int)txt+key;
fputc(txtcode,arc);
}
fclose(arc);
key=0;
system("cls");
principal ();
}
int decodifica ()
{
printf("Digite a senha: ");
scanf("%d",&key);
arc=fopen("cripto.txt","r");
while(!feof(arc))
{
txt=fgetc(arc);
txtdecode=(int)txt-key;
printf("%C", txtdecode);
}
fclose(arc);
key=0;
principal();
}
int erro ()
{
printf("Opcao invalida.\nDeseja continuar? (S/N)");
scanf("%c",&option);
if (option=='S'||option=='s')
{
principal();
}
else
{
sair();
}
}
int sair ()
{
printf ("\nTenha um bom dia.");
}
int principal()
{
printf("\nSelecione a opcao desejada.\n'C' para codificar\n'D' para decodificar\n'S' para sair\n");
scanf("%c",&option);
if (option=='C'||option=='c')
{
codifica();
}
else if (option=='D'||option=='d')
{
decodifica();
}
else if (option=='S'||option=='s')
{
sair();
}
else
{
erro();
}
}
[/code]
Kaiuy
Novo Membro
Registrado
2 Mensagens
0 Curtidas
Criptografia erro com funções em C
#1 Por Kaiuy
19/09/2015 - 16:34