William Minerva Posted March 7, 2022 Posted March 7, 2022 (edited) Oi gente, bom dia, tudo bem? Eu preciso fazer um programa que leia uma frase e que em seguida cada letra do texto seja substituída por outra fazendo uma troca de 3 posições. Por exemplo: a letra A vira letra D, a letra B vira letra E e assim por diante. O problema é que o programa que eu construí ela lê apenas uma palavra mas não lê o resto que eu escrevo. Por exemplo: quando eu escrevo a palavra "CACHORRO CANSADO" o programa lê apenas a palavra "CACHORRO" e me retorna "FDFKRUUR" mas não lê a palavra "CANSADO", o programa considera apenas a primeira palavra que eu escrevo, por que isso está acontecendo? Como posso resolver esse problema? Eu escrevi o programa da seguinte forma: #include <stdio.h> #include <string.h> void cifrar( char * saida, const char * entrada, int chave ) { int i = 0; int tam = strlen(entrada); for( i = 0; i <= tam; i++ ) { if( (entrada[i] >= 'a') && (entrada[i] <= 'z') ) { saida[i] = (((entrada[i] - 'a') + chave) % 26) + 'a'; } else if( (entrada[i] >= 'A') && (entrada[i] <= 'Z') ) { saida[i] = (((entrada[i] - 'A') + chave) % 26) + 'A'; } else { saida[i] = entrada[i]; } } } void decifrar( char * saida, const char * entrada, int chave ) { int ch = 0; int i = 0; int tam = strlen(entrada); for( i = 0; i <= tam; i++ ) { if( (entrada[i] >= 'a') && (entrada[i] <= 'z') ) { ch = (entrada[i] - 'a') - chave; if( ch < 0 ) ch += 26; saida[i] = ch + 'a'; } else if( (entrada[i] >= 'A') && (entrada[i] <= 'Z') ) { ch = (entrada[i] - 'A') - chave; if( ch < 0 ) ch += 26; saida[i] = ch + 'A'; } else { saida[i] = entrada[i]; } } } int main( int argc, char * argv[] ) { char original[100]; scanf("%s", original); char cifrado[100]; cifrar( cifrado, original, 3 ); printf("%s", cifrado); return 0; Edited March 7, 2022 by William Minerva Quote
William Minerva Posted March 7, 2022 Author Posted March 7, 2022 Descobri a solução para o problema, para remover a limitação do scanf() para leitura de espaços, basta apenas usar "scanf(" %[^\n]", s);" 1 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.