about pointers in c program

please help me understand this code how does this work. I REALLY NEED TO UNDERSTAND how this work please pleaase just a short explanation maybe?

{
char plain[] = “abcdefghijklmnopqrstuvwxyz”;

char cipher[] = “bpduhijkaltxwmrzfoysvngeqc”;

char *copy;

int i;

// Loop through the plaintext a character at a time.

// and encode it. If no ciphertext character is found,

// leave the character as it is.

for (copy = cat; *copy != ‘\0’; copy++)

{
for (i = 0; i < 26; i++)

 {

      if(*copy == plain[i])
     {

      *copy = cipher[i];
        break;

is it working well???if yes then write whole program…

#include<stdio.h>
#include<conio.h>

int main()
{
char plain[] = “abcdefghijklmnopqrstuvwxyz”;
char cipher[] = “bpduhijkaltxwmrzfoysvngeqc”;
char *copy;
int i;
char str[]=“cat”;
for (copy = str; *copy != ‘0’; copy++)
{
for (i = 0; i < 26; i++)
{
if(*copy == plain[i])
{
*copy = cipher[i];
break;
}
}
}
puts(str);
getch();
return 0;
}

copy=str //points to starting address of string str=“cat” means rgt nw …*copy is ‘c’
copy++ after this
*copy is ‘a’…and so on

this prgrm converts ur string “cat” to cipher text(string) “dbs”

//