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 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"
    • 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 camargo.2018
      Olá, tudo bem?
      alguém pode me ajudar tipo
      TIPO=Produto&ID=4|TIPO=Produto&ID=4|TIPO=Domain&name=canargo&tls=.com|TIPO=Produto&ID=4 Quero pegar isso e transformar nisso
      for($i = 0; $i <= $quantidade;$i++){ if($produto[tipo][$i] == "Produto"){ $idProduto[$i] = $produto[ID][$i]; }elseif($produto[tipo][$i] == "Domain"){ $NameDomain[$i] = $produto[name][$i]; $TlsDomain[$i] = $produto[tls][$i]; } } alguém pode me ajudar ou se conhece outro método. 
    • By felipems98
      Olá, esse e meu primeiro post no forum, estou com problema para manipular dados recebidos de um arquivo
      Eu quero capturar esses dados e salvar em um variavel, podem com o fgets() eu so consigo printar na tela pois quando vai passar pra outra variavel ele so pega o ultimo caracter.
      Segue a baixo o codigo:
      void main(){ FILE *pont_arquivo; char caminho[100]; char tx[100]; //char c; char texto[100]; int i; //define e abre o arquivo que será formatado printf("coloque o caminho do arquivo que queira abrir\n"); gets(caminho); pont_arquivo = fopen(caminho, "r"); if (pont_arquivo == NULL){ printf ("ERRO: arquivo não encontrado ou sem permissão de acesso.\n"); exit(0); } printf("arquivo aberto.\n"); while(fgets(tx, 100, pont_arquivo) != NULL){ for( i=0; i< sizeof(tx); i++) texto[i] = tx[i]; } fclose(pont_arquivo); printf("%s", texto); } O print consegue retornar todos os valores do arquivo mas não consigo passar eles para uma variável e tratar dentro do código.
      ja tentei com strcpy e esse exemplo eu mandei com for pra atribuir um a um os dados, mas não consegui com nenhum dos dois.
      A baixo tem os dados do arquivo txt:
      teste{ sjdoasijd,xy jsioadja,xy jsiadj,xy ois,xy djsia,xy dijodajsi,xy jiosjodia,xy jbf23,xy 21,xy 21983,xy moisdoia,xy mh8293,xy ajksnd,xy ioaasd,xy }  
    • By lucasseribeiro
      Olá fórum...
      Estou pedindo ajuda aos universitários!
       
      No terminal, com "php -a",  ele funciona bem... Estou usando o Manual do PHP:
      https://www.php.net/manual/pt_BR/function.fwrite.php
       
      Uso o primeiro exemplo das notas... Parece problema de permissões, mas tô boiando quanto onde  mexer nas permissões. No Apache2?! Nunca precisei mexer nos arquivos de configuração do Apache, sempre foi só gerar links simbólicos pelo terminal em /var/www/html, com os alvos dos links numa pasta "oficina" na minha pasta pessoal, e recarregar o navegador.
       
      Mas agora, criei um index.php geral com links para cada projeto, criei um arquivo que funciona como um "index.php individual do projeto" mas com outro nome com o HTML, e outro  com as funções PHP e, nele, uma função com as fopen() e fwrite() do primeiro exemplo das notas do Manual do PHP, sem parâmetros e echos sinalizando a execução.
       
      Chamei a função no index individual que dava include para o arquivo da função. Recarrego a página com F5 e os echos funcionam bem, mas os arquivos que deveriam ser criados não. Quando volto no arquivo das funções, o fopen() e o fwrite() estão rindo de mim!
       
      Já tentei com eles pelados, sem função, com path relativo no caminho do arquivo, aspas duplas, até um comentário antes fazendo //cuti cuti... Mas acabo de notar que estou fazendo os alvos dos links em /var, tentarem criar arquivos em /var, sem permissões de root...
       
      Vou manter o tópico em aberto por via das dúvidas, e se resolver marco como "resolvido" reportando aos demais usuários, para contribuir...
       
      Grato
      Lucas Ribeiro
×

Important Information

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