- 1
Hi there👋can anybody help me to explain this code(especially this lines (10-22)thanks(:
1)#include<stdio.h> 2)int main() 3){ 4)char message[100], ch; 5)int i, key; 6)printf("Enter a message to encrypt: "); 7)gets(message); 8)printf("Enter key: "); 9)scanf("%d", &key); 10)for(i = 0; message[i] != '\0'; ++i){ 11)ch = message[i]; 12)if(ch >= 'a' && ch <= 'z'){ 13)ch = ch + key; 14)if(ch > 'z'){ 15)ch = ch - 'z' + 'a' - 1; 16)} 17)message[i] = ch; 18)} 19)else if(ch >= 'A' && ch <= 'Z'){ 20)ch = ch + key; 21)if(ch > 'Z'){ 22)ch = ch - 'Z' + 'A' - 1; 23)} 24)message[i] = ch; 25)} 26)} 27)printf("Encrypted message: %s", message); 28)return 0; 29)}
4 odpowiedzi
+ 3
gets(message); //dont use gets , use fgets or scanf..
it accepts a string of input, and a intiger key value that is used for encryption
like for example if input is "abcdz" and key is 1, then encryption happens like:
ch='a' and ch+key => 'a'+1= 'b' and next charecter from string is 'c'
ch='b' and ch+key => 'b'+1= 'c'
ch='c' and ch+key => 'c'+1= 'd'
ch='d' and ch+key => 'd'+1= 'e'
ch='z' and ch+key => 'z'+1 is a special symbol
by code :
for(i = 0; message[i] != '\0'; ++i){
ch = message[i];
if(ch >= 'a' && ch <= 'z'){
ch = ch + key;
but now ch >'z' so
if(ch > 'z'){
ch = ch - 'z' + 'a' - 1;
=>
'z'+1 - 'z'+'a'-1 => 'a' (like turning around from 'a' again)
so now ch='a';
//this code works same but for capital letters
else if(ch >= 'A' && ch <= 'Z'){
ch = ch + key;
if(ch > 'Z'){
ch = ch - 'Z' + 'A' - 1;
}
message[i] = ch;
}
}
now at end encrypted message for input "abcdz" is "bcdea"
it just making a charecter farward of key position from alphabet
read about ASCII values of char
hope it helps.
+ 2
Prefer using code Playground to post codes.