Estou com um código de criptografia DES, o código utiliza um sistema de 3 txt's previamente criados pelo usuário, durante o programa o mesmo informa o nome dos txt's, sendo que um deles já previamente preenchido, estou tentando alterar para que o usuário dê o valor no próprio programa, em vez de fornecer o nome do arquivo txt, no entanto o programa não está lendo a linha do gets(string), poderiam me ajudar por favor? Segue abaixo parte do código.
----------
switch(opcao) { case 1: printf("\n\tENCRIPTOGRAFANDO...\n"); printf("Entre com a chave numerica de ate 8 digitos:"); scanf("%s",&chave[0]); printf("\nAbra o arquivo orig.txt e digite a mensagem que deseja criptografar. \nSalve e Feche. \nDigite 'orig.txt', sem aspas: "); scanf("%s",&nome1[0]); printf("\nEntre com o nome do arquivo para salvar o texto codificado (cripto.txt): "); scanf("%s",&nome2[0]); printf("\nArquivo encriptado com sucesso. Verifique cripto.txt."); encrypt(); break; case 2: printf("\n\tDECRIPTOGRAFANDO...\n"); printf("Entre com a chave numerica usada para criptografar: "); scanf("%s",&chave); printf("\nEntre com o nome do arquivo que contem o texto codificado (cripto.txt): "); scanf("%s",&nome1[0]); printf("\nEntre com o nome do arquivo para salvar o texto decifrado (descripto.txt): "); scanf("%s",&nome2[0]); printf("\nArquivo decriptado com sucesso. Verifique descripto.txt."); decrypt(); break; case 0: printf("\n\tFim da execucao. Programa de criptografia DES, APS segundo semestre.\n\n"); printf("\n\tPor Stephani Souza, Heitor Galassi, Nathan Costa e Thyago Biazin."); exit(0); default: printf("\nOpcao invalida! Tente novamente.\n"); getchar(); break; } } void encrypt() { // char string[150]; int i,j,o; struct LR op, ip; struct ks keys[16]; FILE *arqin, *arqout; /* FILE *msg; msg = fopen("orig.txt","w+"); //chamo o arquivo para ler+escrever, apago o que estava nele antes if(!msg) { printf("\nErro ao abrir arquivo!"); fclose(msg); } printf("\nDigite a mensagem que sera criptografada(max. 150 caracteres):"); gets(string); for(o=0; string[o]; o++) putc(string[o], msg); msg = arqin;*/
for (i = 0; i < 16; i++) { keys = KS (i); } arqin = stdin; arqout = stdout; if ((arqin = fopen(nome1, "rb")) == NULL) { fprintf( stderr, "erro no arquivo %s\n", nome1 ); exit(1); } if ((arqout = fopen(nome2, "wb")) == NULL) { fprintf( stderr, "erro no arquivo %s\n", nome2 ); exit(1); } void decrypt() { int i; struct LR op, ip; struct ks keys[16]; FILE *arqin, *arqout;
for (i =0; i < 16; i++) { keys = KS (i); } arqin = stdin; arqout = stdout; if ((arqin = fopen(nome1, "rb")) == NULL) { fprintf( stderr, "erro no arquivo %s\n", nome1 ); exit(1); } if ((arqout = fopen(nome2, "wb")) == NULL) { fprintf( stderr, "erro no arquivo %s\n", nome2 ); exit(1); } while (fread(&ip, 1, sizeof(struct LR), arqin) != 0)
Pergunta
Heitor Galassi
Estou com um código de criptografia DES, o código utiliza um sistema de 3 txt's previamente criados pelo usuário, durante o programa o mesmo informa o nome dos txt's, sendo que um deles já previamente preenchido, estou tentando alterar para que o usuário dê o valor no próprio programa, em vez de fornecer o nome do arquivo txt, no entanto o programa não está lendo a linha do gets(string), poderiam me ajudar por favor? Segue abaixo parte do código.
----------
switch(opcao) {
case 1:
printf("\n\tENCRIPTOGRAFANDO...\n");
printf("Entre com a chave numerica de ate 8 digitos:");
scanf("%s",&chave[0]);
printf("\nAbra o arquivo orig.txt e digite a mensagem que deseja criptografar. \nSalve e Feche. \nDigite 'orig.txt', sem aspas: ");
scanf("%s",&nome1[0]);
printf("\nEntre com o nome do arquivo para salvar o texto codificado (cripto.txt): ");
scanf("%s",&nome2[0]);
printf("\nArquivo encriptado com sucesso. Verifique cripto.txt.");
encrypt();
break;
case 2:
printf("\n\tDECRIPTOGRAFANDO...\n");
printf("Entre com a chave numerica usada para criptografar: ");
scanf("%s",&chave);
printf("\nEntre com o nome do arquivo que contem o texto codificado (cripto.txt): ");
scanf("%s",&nome1[0]);
printf("\nEntre com o nome do arquivo para salvar o texto decifrado (descripto.txt): ");
scanf("%s",&nome2[0]);
printf("\nArquivo decriptado com sucesso. Verifique descripto.txt.");
decrypt();
break;
case 0:
printf("\n\tFim da execucao. Programa de criptografia DES, APS segundo semestre.\n\n");
printf("\n\tPor Stephani Souza, Heitor Galassi, Nathan Costa e Thyago Biazin.");
exit(0);
default:
printf("\nOpcao invalida! Tente novamente.\n");
getchar();
break;
}
}
void encrypt() {
// char string[150];
int i,j,o;
struct LR op, ip;
struct ks keys[16];
FILE *arqin, *arqout;
/* FILE *msg;
msg = fopen("orig.txt","w+"); //chamo o arquivo para ler+escrever, apago o que estava nele antes
if(!msg)
{
printf("\nErro ao abrir arquivo!");
fclose(msg);
}
printf("\nDigite a mensagem que sera criptografada(max. 150 caracteres):");
gets(string);
for(o=0; string[o]; o++) putc(string[o], msg);
msg = arqin;*/
for (i = 0; i < 16; i++) {
keys = KS (i);
}
arqin = stdin;
arqout = stdout;
if ((arqin = fopen(nome1, "rb")) == NULL) { fprintf( stderr, "erro no arquivo %s\n", nome1 ); exit(1); }
if ((arqout = fopen(nome2, "wb")) == NULL) { fprintf( stderr, "erro no arquivo %s\n", nome2 ); exit(1); }
void decrypt() {
int i;
struct LR op, ip;
struct ks keys[16];
FILE *arqin, *arqout;
for (i =0; i < 16; i++) {
keys = KS (i);
}
arqin = stdin;
arqout = stdout;
if ((arqin = fopen(nome1, "rb")) == NULL) { fprintf( stderr, "erro no arquivo %s\n", nome1 ); exit(1); }
if ((arqout = fopen(nome2, "wb")) == NULL) { fprintf( stderr, "erro no arquivo %s\n", nome2 ); exit(1); }
while (fread(&ip, 1, sizeof(struct LR), arqin) != 0)
----------
galera agradeço desde já!
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.