Olá novamente, Alexandre!
Obrigado pela ajuda, logo mais estarei testando ela para ver como ficaria, entretanto, desde o dia que eu fiz esse post, eu continuei pensando em outras formas de solucionar o meu problema sozinho enquanto um bom samaritano não aparecia para me dar uma ideia por aqui kkkkk. E depois de muitas pesquisas e tentativas seguidas de fracassos, eu cheguei em um código que conseguisse satisfazer os meus objetivos(ou pelo menos quase):
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define cifra 2
char *encod(int *vetor);
char mat[50];
int decod(char *vetor);
int main(int arg, char *argv[])
{
int vet[3];
vet[0] = 2147;
vet[1] = 34569;
vet[2] = 125590;
for (int i = 0; i < 3; i++)
{
printf("\nnumero encriptado: %s\n", encod(vet[i]));
printf("numero decodificado: %d\n", decod(encod(vet[i])));
}
return 0;
}
char *encod(int *vetor)
{
itoa(vetor, mat, 10);
for (int i = 0; i < strlen(mat); i++)
{
mat[i] *= cifra;
}
return (mat);
}
int decod(char *vetor)
{
char conv[strlen(vetor)];
for (int i = 0; i < strlen(vetor); i++)
{
conv[i] = vetor[i] / cifra;
printf("conv%i: %c\n", i, conv[i]);
printf("n%d: %d\n", i, conv[i]);
}
printf("string: %s\n", conv);
int n = atoi(conv);
return n;
}
Como você pode ver neste novo código, eu acabei conseguindo contornar alguns dos problemas sozinho, como a questão do retorno da função que era pra retornar um array, mas estava retornando 1 caractere e também a questão do "null" mostrado pelo "printf". Eu com a ingenuidade de um mero mortal, pensei que já tinha resolvido todos os problemas e que já estava pronto pra realmente criar um algorítimo de criptografia e com isso adicionei a função "decod" que desfaz oque a "encod" realiza. Este é um fragmento doque apareceria caso você rodasse o codigo:
numero encriptado: dbhn
conv0: 2
n0: 50
conv1: 1
n1: 49
conv2: 4
n2: 52
conv3: 7
n3: 55
string: 2147Çp@
numero decodificado: 2147
Como as funções são executadas em um loop for, este é o resultado da primeira posição do array de inteiros "vet". "conv" é a exibição do numero já decodificado, mas, ainda em formato de caractere. "n" é o numero que representa o caractere na tabela ASCII.
Mas como nem tudo na vida são flores, quando eu mudo o valor da "cifra" de 2 para 3, obviamente os prints na tela também vão mudar, mas a função "decod" não decodifica mais o caractere de volta para o numero verdadeiro.
exemplo com "cifra = 3":
numero encriptado: ûô£Ñ
conv0: ¦
n0: -35
conv1: ▄
n1: -36
conv2: ▀
n2: -33
conv3: Ô
n3: -30
string: ¦▄▀ÔÇp@
numero decodificado: 0
Em "conv" aparecem os respectivos caracteres, mas em "n" aparecem números negativos, sendo que todas as operações realizadas são com números positivos e alem disso, esses numeros não representam os caracteres na tabela ASCII(pegue como exemplo o caractere "Ô" de "conv3"). OBS: se aumentar o valor da cifra para 4, o problema persiste.