Ir ao conteúdo

Posts recomendados

Postado

Estou fazendo um código de criptografia básico, onde o usuário dá uma chave e um texto e o programa retorna o texto criptografado(Somando a chave com a letra) . Exemplo:

Chave:1

Texto a ser criptografado (máximo de 200 caracteres): Az

Texto criptografado: B{ 

Mais  tarde vou editar para que o "z" vire um "a".

O código é o seguinte:

#include<stdio.h>
#include<string.h>

int
main (void)
{
int c;
char t[201];
char tc[201];
printf("Chave: ");
scanf("%d", &c);                        //chave para somar às letras na criptografia
if (c<1)
   {
   printf("\nMe dê um numero positivo.\n");
   return 1;                    //caso o número seja 0 ou menos o programa encerra
   }
printf("Texto a ser criptografado (máximo 200 caracteres) : ");
scanf("%s", t);
int p=0, i, n, tn[202];
for(i = 0, n=strlen(t); i < n; i++);
   {
   p=i;
   tn[i] = ((int)t[i] + c);                     //criptografa cada letra da string
   }
tc[p]='\0';
printf("Texto criptografado: ");
printf("%s\n", tc);
return 0;
}

Mas ocorre um erro, o programa imprime "��". Qual o meu erro? (acredito que seja na transição de float para int como diz o título) Também estou aberto a sugestões de como simplificar o código e coisas do tipo

  • Amei 1
Postado

@Aquiles Augusto

3 horas atrás, Aquiles Augusto disse:

Qual o meu erro? (acredito que seja na transição de float para int como diz o título)

Não há nenhuma variável do tipo float em seu programa.

O problema é que você está tentando imprimir a string `tc` sem ao menos inicializá-la, tudo o que fez foi inserir um '\0' em uma determinada posição:

3 horas atrás, Aquiles Augusto disse:
tc[p]='\0';

Aliás, qual o propósito do vetor `tn`?

Você poderia só somar o valor de `c` aos valores de `t`.

E não se preocupe com cast:

3 horas atrás, Aquiles Augusto disse:
tn[i] = ((int)t[i] + c);

de char pra int ocorre uma conversão implícita, não precisa de cast.

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...