Doubts about Cesar's figure

1

The problem is that I need to stop printing when it reaches the last digit of the vector, but I do not know how to do it, and also how do I print after the z, because the way I did it, it did not print? (I'm a beginner so if you can explain how it works thank you)

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

int main () {

    char cifra[50];

    printf("\nInforme um texto: ");
    gets(cifra);

    for(int i=0; i<**50**; i++){
        if(cifra[i]>'z'){
            cifra[i]='a';
            printf("%c",cifra[i]+1);
        }else{
            printf("%c",cifra[i]+3);
        }

    }

    return 0;
}
    
asked by anonymous 05.10.2016 / 19:32

1 answer

2

See if you understand my code any doubts please let me know. PS: The punctuation marks will be encrypted, if you do not want to add another condition.

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

int main () {

char cifra[50];
int tam;

printf("\nInforme um texto: ");
fgets(cifra,50,stdin); // Não é recomendado usar gets,então eu useifgets que faz o mesmo
                       // no 1º parametro está a string para onde vai o texto
                       // o 2º parametro o tamanho da string
                       // o 3º é o standard input ou seja o teclado

tam = strlen(cifra); // variável para saber o comprimento da string digitada

for(int i=0; i<tam; i++)
{
    if(cifra[i] == 'z')
        cifra[i] = 'a';
    else
        if(cifra[i] == ' ' || cifra[i] == '\n') // Caso seja um espaço ou uma quebra de linha ele 
                                                // apenas imprime não avança 3 
            printf("%c",cifra[i]);
        else
            printf("%c",cifra[i] + 3);
}

return 0;
}
    
06.10.2016 / 01:12