Eu estou precisando construir um código em C, aonde tenha 4 opções:
Opção 1 – Fornece o nome do arquivo da imagem.
Opção 2 – Entra com a mensagem com o tamanho máximo de 255 caracteres e grava a imagem em arquivo com a imagem codificada.
Opção 3 – Exibi na tela a mensagem extraída da imagem na tela.
Opção 4 – Sai do programa.
A idéia é dar um nome a um arquivo de imagem já criado, depois na opção 2, eu devo digitar até no 255 caracteres, e estes digitos deverão entrar no código hexadecimal de desta imagem existente, sem afetar os caracteres de controle da imagem.
Sei que tem que usar for, fseek e ponteiros, mas não entendi muito o conceito.
Depois na opção 3, eu preciso exibir o código hexadecimal com o que eu digitei.
A principio que eu consegui fazer isso, tomando como referencia um arquivo de texto (extensão .txt). Mas estou tendo dificuldades.
//Declarações das Variáveis
FILE *arquivo=0; // Variável zerada para não dar erro no fclose;
int op, estado;
char NomedoArquivo[255]="";
char texto[255];
char *ptexto;
ptexto=&texto;
do
{
system("cls");
printf("Nome do arquivo: %s",NomedoArquivo);
printf("\n\n1) Abertura de arquivo\n");
printf("2) Codifica a mensagem\n");
printf("3) Decodifica a mensagem\n");
printf("4) Sai");
op=getch();
if (op=='1')
{
system("cls");
LeNomedoArquivo(NomedoArquivo);
Temporizacao();
}
if (op=='2')
{
system("cls");
LeVetor(ptexto);
Temporizacao();
}
if (op=='3')
{
system("cls");
ExibeVetor(texto);
Temporizacao();
}
}while (op!='4');
return 0;
}
//*********************************
//* Função de Abertura de Arquivo *
//*********************************
void LeNomedoArquivo(char *txt)
{
printf("Entre com o nome do arquivo:\n>");
fopen("NomedoArquivo","r");
gets(txt);
}
void LeVetor(char *txt)
{
printf ("Entre com uma mensagem com o tamanho maximo de 255 caracteres a ser gravada na imagem codificada [255]:\n>");
gets(txt);
printf ("\n\nSucesso\n\n");
Pergunta
Danilo Elias da Silva
Boa noite pessoal,
Estou precisando de uma ajuda de vocês
Eu estou precisando construir um código em C, aonde tenha 4 opções:
Opção 1 – Fornece o nome do arquivo da imagem.
Opção 2 – Entra com a mensagem com o tamanho máximo de 255 caracteres e grava a imagem em arquivo com a imagem codificada.
Opção 3 – Exibi na tela a mensagem extraída da imagem na tela.
Opção 4 – Sai do programa.
A idéia é dar um nome a um arquivo de imagem já criado, depois na opção 2, eu devo digitar até no 255 caracteres, e estes digitos deverão entrar no código hexadecimal de desta imagem existente, sem afetar os caracteres de controle da imagem.
Sei que tem que usar for, fseek e ponteiros, mas não entendi muito o conceito.
Depois na opção 3, eu preciso exibir o código hexadecimal com o que eu digitei.
A principio que eu consegui fazer isso, tomando como referencia um arquivo de texto (extensão .txt). Mas estou tendo dificuldades.
O código que eu já criei foi este:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[]) {
//Declarações das Funções
void LeNomedoArquivo(char *txt);
void LeVetor(char *txt);
void ExibeVetor(char *txt);
void Temporizacao (void);
//Declarações das Variáveis
FILE *arquivo=0; // Variável zerada para não dar erro no fclose;
int op, estado;
char NomedoArquivo[255]="";
char texto[255];
char *ptexto;
ptexto=&texto;
do
{
system("cls");
printf("Nome do arquivo: %s",NomedoArquivo);
printf("\n\n1) Abertura de arquivo\n");
printf("2) Codifica a mensagem\n");
printf("3) Decodifica a mensagem\n");
printf("4) Sai");
op=getch();
if (op=='1')
{
system("cls");
LeNomedoArquivo(NomedoArquivo);
Temporizacao();
}
if (op=='2')
{
system("cls");
LeVetor(ptexto);
Temporizacao();
}
if (op=='3')
{
system("cls");
ExibeVetor(texto);
Temporizacao();
}
}while (op!='4');
return 0;
}
//*********************************
//* Função de Abertura de Arquivo *
//*********************************
void LeNomedoArquivo(char *txt)
{
printf("Entre com o nome do arquivo:\n>");
fopen("NomedoArquivo","r");
gets(txt);
}
void LeVetor(char *txt)
{
printf ("Entre com uma mensagem com o tamanho maximo de 255 caracteres a ser gravada na imagem codificada [255]:\n>");
gets(txt);
printf ("\n\nSucesso\n\n");
}
void ExibeVetor(char *txt)
{
printf ("Segue mensagem extraida abaixo:\n>%s",txt);
}
void VisualizaArquivoHexa(char *NomArq)
{
FILE *arq; //vai ser associada ao arquivo
int c;
int cont=0;
int cont2=0;
arq = fopen(NomArq,"r");
if(arq==0)
printf("\nErro na leitura do arquivo");
else
printf("\nArquivo aberto com sucesso\n\n");
if (arq !=0)
{
do
{
c=fgetc(arq);
if(!feof(arq))
{
if(c<16)
printf("0");
printf("%x ",c);
}
else
{
arq=0;
}
cont++;
cont2++;
if (cont>255)
{
getch();
cont=0;
}
if (cont2>15)
{
printf("\n");
cont2=0;
}
}while (arq!=0);
fclose(arq);
printf("\n\nFim do arquivo\n\n");
}
}
void Temporizacao (void)
{
printf("\n.");
sleep(1);
printf(".");
sleep(1);
printf(".");
}
Link para o comentário
Compartilhar em outros sites
0 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.