Thorlar
Thorlar

Reputation: 11

Very Basic Encryption

#include <stdio.h>
int limit;
char alp[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','w','x','y','z'};
void encode(char message[21],char enc_message[21],int key);

void decode(char enc_message[21],char dec_message[21],int key);


main()
{



int key,i=0,j=0;
char message[21];
char enc_message[21];
char dec_message[21];
char encrypted[21];
char a='\0';
printf("Input the characters to encrypt\n");
 while(i<21 && a!='\n')
    {
    scanf("%c",&a);
    message[i]=a;
    i=i+1;
    }

for(i=0;;i++) /*custom strlen*/
        {
        if( message[i]= '\0')
            {
            limit=i;
            break;
            }
        }
printf("Input the key");
scanf("%d",key);


for(i=0;i<21;i++)
{
enc_message[i]=message[i];
}


encode(message[21],enc_message[21],key);


for(i=0;i<21;i++)
    {
    dec_message[i]=enc_message[i];
    }

for(i=0;i<limit;i++)
    {
    printf("%c",enc_message[i]);
    }


printf("\n\n");


decode(enc_message[21],dec_message[21],key);


for(i=0;i<limit;i++)
    {
    printf("%c",dec_message[i]);
    }






}







void encode(char message[21],char enc_message[21],int key)
    {
    /*char temp[21];*/
    int x,y;
    for(x=0;x<limit;x++)  /* message check */
        {
        for(y=0;y<26;y++) /* <----- alphabet check */
            {
            if (enc_message[x]==alp[y]) enc_message[x]=alp[y+key];
            }
        }
    }   
/*------------------------------------------------------------------------*/
void decode(char enc_message[21],char dec_message[21],int key)
    {
    int x,y;
    for (x=0;x<limit;x++)
        {
        for(y=0;y<26;y++)
            {
            if (dec_message[x]==alp[y+key]) dec_message[x]=alp[y]; 
            }
        }
    }

The compiler says,the mistake has to do with the way I call functions(and write them)and says: passing argument1 of 'encode' makes pointer from integer without a cast ,and that is for argument 2 of 'encode' and the exact same for 'decode'

Thanks in advance!

Upvotes: 0

Views: 78

Answers (1)

Iharob Al Asimi
Iharob Al Asimi

Reputation: 53016

You are passing a single element and it's not even a valid element, try

decode(enc_message, dec_message, key);

Also, format your code so it's readable that is really important, and looping to compute the length of the string to use it in another loop is not a very smart thing, print it in a loop like

for (int i = 0 ; enc_message[i] != '\0' ; ++i) ...

also, don't over use break, just think about the logical condition for the loop, it's the same one where you break. Code is much more readable if the condition appears in the right place.

Upvotes: 3

Related Questions