Olá, estou tendo um problema para ler e escrever no mesmo arquivo.
O que eu quero fazer é ler um caracter do arquivo, somar um valor a esse caracter e escrever o resultado como um caracter na mesma posição do original. (ex: 'A'= 65 + 3 = 68 = 'E')
Fazer isso para todo o arquivo.
Meu código:
#include <iostream>
#include <fstream>
using namespace std;
#include <stdlib.h> // usando exit() e atoi()
int main(int argc, char* argv[])
{
int p;
char c; // caractere do arquivo
int cripto; // caractere encriptado do arquivo
int key = atoi (argv[2]); // senha
if (argc != 3) // verifica número de parâmetros
{
cout << "\nErro, use 2 parametros como: c:\\meuarquivo.xxx senha" << endl;
exit(1);
}
else if (key < 0 || key > 255) // verifica a senha
{
cout << "\nErro, a senha deve ser um numero de 0 a 255" << endl;
exit(1);
}
fstream inout (argv[1], ios::binary | ios::out | ios::in); // abre o arquivo
if (!inout.is_open()) // verifica erro ao abrir arquivo
{
cout << "\nErro ao abrir arquivo" << endl;
exit(1);
}
while (inout.good())
{
inout.get(c); // lê caracter
cripto = (int)c + key; // aplica a senha
inout.seekp( -1, ios_base::cur); // volta uma posição
inout.put((char)cripto); // escreve caracter no arquivo
}
inout.close(); // fecha o arquivo
cout << "\nCriptografado com sucesso!" << endl;
return 0;
}
Já quebrei muito a cabeça, não consigo ver onde errei.
Pergunta
Gaba_
Olá, estou tendo um problema para ler e escrever no mesmo arquivo.
O que eu quero fazer é ler um caracter do arquivo, somar um valor a esse caracter e escrever o resultado como um caracter na mesma posição do original. (ex: 'A'= 65 + 3 = 68 = 'E')
Fazer isso para todo o arquivo.
Meu código:
Já quebrei muito a cabeça, não consigo ver onde errei.
Obrigado a todos pela ajuda logo de adiantado!
Gabriel
Link para o comentário
Compartilhar em outros sites
5 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.