Para oferecer maior segurança a seus usuários, a empresa RainData armazena a senha dos usuários da seguinte maneira:
Na senha original, substitui-se algumas consoantes maiúsculas por números, conforme a tabela abaixo
Inverte-se a string obtida no passo anterior
Consoante Número correspondente
C 1
S 2
T 3
R 4
P 5
Faça um programa que tenha como entrada uma string contendo a senha ser criptografada. Como saída, o programa deve imprimir a senha criptografada conforme as condições apresentadas anteriormente.
Primeiro no main vc so deveria chamar inverte fora do loop for
Segundo q a função inverte recebe um ponteiro, então todas as alterações no vetor de entrada vão ser percebidas depois da execução.
Sabe como vc leu a entrada? É a mesma coisa.
Vc não deveria retornar nada. Inclusive vc diz q retorna um char (e não o array completo). Pra piorar vc esta chamando essa função de forma recursiva e certamente isso causa do segfault. Tira esse return, transforma em void e monstra o array depois de chamar inverte.
se na função inverte vc fizer int max = strlen(str) - 1; e usar max no lugar de tam vc não vai precisar substrair 1 a toda hora e o codigo fica legivel.
vc pode criar uma funcao criptografar que semelhante a inverte que ja faz a troca do C por 1, etc
vc pode usar um switch/case no lugar desses if / else if
tem umas mutretas pra vc trocar C por 1 e S por 2. mas acho q o importante é o programa fucionar