Jump to content

Archived

This topic is now archived and is closed to further replies.

Heitor Galassi

gerar um arquivo e inserir uma string em txt em C

Recommended Posts

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á!

Share this post


Link to post
Share on other sites

Não use gets. É inseguro. Use fgets no lugar.
Provavelmente está "pulando a leitura" porque algum \n ficou na entrada padrão. Não use fflush(stdin) p/ corrigir isso. Se a leitura foi feita com scanf, use scanf("%s%*c") p/ ignorar o \n final na entrada.

Share this post


Link to post
Share on other sites

  • Similar Content

    • By unset
      Olá, estou com uma pequena dúvida 
       
      Como transformar a data que recebemos com a função date("Y-m-d H:i") em uma string 2021-04-22T00:00 exatamente nesse formato ?
    • By lezão
      Bom dia!
      Estou usando um código q me retorna o mês por extenso, o campo no banco de dados esta com a formatação "Date".
      Mas qnd eu coloco este codigo abaixo:
      <?php setlocale(LC_TIME, 'pt_BR', 'pt_BR.utf-8', 'pt_BR.utf-8', 'portuguese'); date_default_timezone_set('America/Sao_Paulo'); echo strftime('%a, %d de %B de %Y', strtotime('data_comentario')); ?> Não puxa a data correspondente ao do campo do banco.
      Fica retornando assim em todos registros: Qua, 31 de Dezembro de 1969.
       
       
      Alguem pode me ajudar????
       
      Obrigado!
    • By Jefferson andre
      Boa tarde, Estou com problemas ao utilizar o fopen, no localhost funciona corretamente mas ao subir para o site em vez de criar o arquivo em C:\nomedapasta ele cria na pasta que esta executando dentro do site.   Ja tentei colocar o caminho com duas barras mas mesmo assim nao esta funcionando. Segue o caminho que preciso criar o arquivo C:\CFe\123456\Envio\nomedoarq.xml   ja tentei isso acima assim C:\\CFe\\123456\\Envio\\nomedoarq.xml e nada   estou usando o comando assim: $destino = fopen($xdestino, 'w');   e entao vou colocando as escritas dentro dele com fwrite($destino, "escrita");   O que fazer ? ou pra qual comando mudar para escrever um xml ?
    • By Jefferson andre
      Ola,
      qual comando eu utilizo para pegar o que esta entre <a>teste</a> ?
      tendo como valor retornado: teste
       
      O uso seria para ler o conteudo de um xml ok
       
    • By luciano
      Boa noite pessoal alguém poderia me ajudar por favor,
      gostaria de pagar o valor da função random e colocar na imagem.
      -----função-----
      <p id="demo"></p>
      <script>
      document.getElementById("demo").innerHTML =
      Math.floor((Math.random() * 22) + 1);        
      </script>
      ----------
       <img src="imagens/('#demo').jpg" alt="Card">
       
      Eu ja tentei:
      ('#demo')
      '#demo'
      "#demo"
      Nada funciona.
       
      Por favor me dem uma luz, não manjo de java
      Obrigado
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.