Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Leandro T.
      pessoal bom dia alguém poderia me ajudar com o FormValidation?
       
      "nomefuncionario": {
                  validators: {
                      
                  
                    notEmpty: {
                      message: "Nome completo do funcionário é obrigatório."
                    } , <=== este funciona normalmente
                      
                      callback: {  // agora o callback nao consigo fazer funcionar
                              message: 'este nome não é valido',
                              callback: function (input) {
                                  if (input.value = 'algum valor digitado') {
                                      return true
                                  } }},
                      
                      
                      
                  }
    • Por nathanmoreira
      Após diversos cálculos provindos de um código, recebo um número inteiro ao qual não sei o tamanho ao certo (pode variar de 1 pra frente). Quero passar esse número para string e formatar ele de maneira a colocar um ,00 no final e, a cada 3 números antes da virgula, um ponto. Ou seja, deixar o número num formato como: 45.114.477,00
       
      Como fazer? 
    • Por TK_T
      olá sou iniciante consegui fazer um o código de um exercício só que quando eu peço o valor 12ab ele lê como numérica alguém pode me ajudar? 
      Exercício: Leia uma string e diga se a mesma é numérica (na base decimal) ou não.
      Ex.: "123" -> numérica
      "abc" -> não numérica
      "12ab" -> não numérica
      "12.34" -> numérica 
      #include <stdio.h> int main() { char Numero; printf("Digite Algo: "); scanf("%c", &Numero); if(Numero == '1' || Numero == '2' || Numero == '3' || Numero == '4' || Numero == '5' || Numero == '6' || Numero == '7' || Numero == '8' || Numero== '9' || Numero == '0') printf("\tNumérica...\n"); else printf("\tNão Numérica\n"); return 0; }  
    • Por clayton.lima2020
      Boa Tarde!
       
      Pessoal estou com um problema para resolver:
       
      Tenho um uma string que é um Nome:  SYLVIA
       
      Eu preciso fazer uma uma busca nessa string achar a letra Y e depois verificar se após a letra Y a próxima letra é Vogal ou Consoante.
       
      No caso do nome SYLVIA a próxima letra é L então retorna Consoante.
       
      Alguém sabe montar esse algoritmo ai?
    • Por 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 ?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.