Jump to content
Sign in to follow this  
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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By icaroperetti45
      Faça um programa em JAVA que deve ficar lendo uma letra por vez do teclado até que o operador digite a letra x. Após o operador digitar x o programa deve apresentar na tela o número de vezes que o operador digitou dois caracteres iguais em sequencia.
       
      Rapazeada, sou iniciante no java e gostaria de uma ajuda com o Exercício a seguir! Gostaria de saber como utilizo o != para string no while!
       
      package br.edu.ifcvideira.Lista3;
      import java.util.Scanner;
      public class Exercicio7 {
              public static void main(String[] args) {
                  Scanner in = new Scanner(System.in);
                  
                  String letra = null;
                  String letraCorreta = "x";
                  
                  while (letra.equals(letraCorreta)) {
                      
                  }
              }        
      }
       
    • By Santos_2015
      tenho array que está sendo preenchido assim:
      $dados = array([0] => "Nome",[1] => "SobreNome",[2] => "null"); queria que ficasse dessa forma:
      $dados = array([0] => "Nome",[1] => "SobreNome",[2] => null); pois estou extraindo os valores do array com array_values  pra colocar em um INSERT, os campos que podem ser null são do tipo date(BD mysql),
      então tenho que retirar as aspas quando o valor vier null , ou no próprio array, ou após o array_values, alguma sugestão?  
    • By Thalysson Torres
      Estou com problema nesse código, na verdade é uma duvida de como trabalhar melhor com string. Eu quero faze um programa e nele quero receber do usuario, o sexo, caso o usuario digite um nome no local do sexo e seja diferente de Masculino, Feminino... de mensagem de erro. 
       
       
      #include <stdio.h>
      #include <stdlib.h>
      #include <math.h>

      int main()
      {
          char nome [25], sexo;

          
          
      printf("Digite o nome \n");
      scanf("%[\n]", &nome);
      printf("Digite o Sexo:\n Para feminino digite: F \n\n Para masculino digite; M \n");
      scanf("%c",&sexo);
      if (sexo != 'f'|| 'F' || 'M' || 'm')
          printf("Sexo Invalido");
       
       
      ...
       


          
          return 0;
      }
       
    • By Aureo Almeida
      O Felipe Guedes Coutinho ajudou na resolução de um problema quanto a como passar valores de variáveis de uma página com um carrinho para um arquivo com a API do PagSeguro. Consegui fazer isso através de sessões, e a passagem ocorre normalmente. O problema que surgiu dessa solução, que para o meu contexto é a melhor, é que a API do PagSeguro Lightbox não está reconhecendo variáveis em tempo de execução. Mesmo que convertidas em STRING. O tópico que abri e que creio que se esgotou o problema original em que o Felipe Guedes Coutinho ajudou a resolver foi este:
      Colocando o problema. Possuo duas variáveis, uma que contém um nome de produto que quero passar como parâmetro para um pagamento no PagSeguro lightbox, e outra com o valor. Ambas são oriundas de um processo em tempo de execução, e não há problema com ele, pois elas são preenchidas normalmente e os valores são impressos no display. A variável $produto_nome e a $ttBrasil. Elas são repassadas para duas variáveis SESSION:
      $_SESSION['descricao'] = $produto_nome; $_SESSION['valorTotal'] = $ttBrasil; Na página em que se encontra o script da API do PagSeguro, chamada pagseguro.php, esses valores são recebidos sem problemas (numa condição que explicitarei), de duas formas:
      $data['itemDescription1'] = $_SESSION['descricao']; $data['itemAmount1'] = $_SESSION['valorTotal']; Ou $data['itemDescription1'] = "'".$_SESSION['descricao']."'"; $data['itemAmount1'] = "'".$_SESSION['valorTotal']."'"; O problema é que este processo funciona normalmente e a variável é reconhecida quando o valor é declarado estaticamente e entre aspas simples. Em tempo de execução não.
      Funciona quando:
      $ttBrasil = '50.00'; $produto_nome = 'Nome de Teste'; Se as variáveis vierem em tempo de execução, mesmo existindo (eu as imprimo no display normalmente), a API do PagSeguro não reconhece. Quando falo em tempo de execução, é as SESSION recebendo diretamente as variáveis:
      $_SESSION['descricao'] = $produto_nome; $_SESSION['valorTotal'] = $ttBrasil;  
      A variável $ttBrasil é DECIMAL no BD, reconhecida como DOUBLE pelo PHP. Eu converti ela para STRING de várias formas, sempre mantendo o problema, mas achei mais adequado usar a função STRING, que converte FLOAT em STRING:
      $ttBrasil = (string) $ttBrasil; Verifiquei após a conversão e ela retorna como do tipo STRING. Uso esses comandos para verificar o tipo de variável e o valor.
      echo gettype($ttBrasil); echo $_SESSION['valorTotal']; Este é o problema que não consegui resolver.
    • By RENATA S P BALSANI
      Declarar e atribuir três variáveis, uma com o seu 'nome', outra com o seu 'sobrenome' e outra com a sua 'idade'. Então, declare uma variável com nome resultado e atribua uma string unindo suas variaveis da seguinte forma: " João Silva terá 30 anos". Respeite os espaços!
       
      A Solução não está rodando:
       
      var nome = "Heitor";
      var sobrenome = "Balsani"
      var idade = 4;
      var tempo ="anos";
      var resultado = (nome + " " + sobrenome + " "+ idade + " " + tempo);
      console.log (resultado);
      //  resultado seria: "Heitor Balsani terá 4 anos"
×

Important Information

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