Simple C++ Encryption/Decryption Program

Apr 28, 2008 at 7:32pm
Ok I think I have everything I need to get the output of:


Encrypted string is: uijt!jt!b!tfdsfu"

Decrypted string is: this is a secret!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream >
using std :: cout;
using std :: endl;
void encrypt( char [ ] ); // prototypes of functions used in the code
void decrypt( char * ePtr );
int main( )
{
// create a string to encrypt
char string[ ] = "this is a secret!";
cout << "Original string is: " << string << endl;
encrypt( string );
// call to the function encrypt( )
cout << "Encrypted string is: " << string << endl;
decrypt( string );
// call to the function decrypt( )
cout << "Decrypted string is: " << string << endl;
return 0;
}// main

//encrypt data
void encrypt (char e[] ) 
{
for( int i=0; e[i] != '\0'; ++i ) ++e[i];
} // encrypt

//decrypt data
void decrypt( char * ePtr ) {
for( ; * ePtr != '\0'; ==* ePtr ) --(* ePtr);
}


However I get the following 2 errors when compiling. I have tried moving code around but still to no avail. What am I doing wrong?

D:\Profiles\rdkv34\Desktop\Struct.cpp In function `void decrypt(char*)':

Line 28 D:\Profiles\rdkv34\Desktop\Struct.cpp expected primary-expression before '==' token
Apr 28, 2008 at 8:10pm
The compiler is complaining about the decrypt function;
1
2
3
4
void decrypt( char * ePtr ) {
for( ; * ePtr != '\0'; ==* ePtr ) --(* ePtr);
//                     ^^^^^^  error
}

do you want
1
2
3
void decrypt( char * ePtr ) {
for( ; * ePtr != '\0'; ++* ePtr ) --(* ePtr);
}

Last edited on Apr 28, 2008 at 8:11pm
Apr 28, 2008 at 8:13pm
closed account (z05DSL3A)
I think line 28 should be:
for( ; * ePtr != '\0'; ++* ePtr ) --(* ePtr);

Edit: beaten to it.

Edit 2: Thanks Duoas (see later)
The above code sould be:

for( ; * ePtr != '\0'; ++ ePtr ) --(* ePtr);
Last edited on May 30, 2008 at 6:30am
Apr 28, 2008 at 8:27pm
I just changed line 28 and that got the desired output. I knew I was overlooking something small. Thanks for your help
May 30, 2008 at 12:48am
Hi, I'm new to this. I copy and pasted the code and then changed line 28. It compiles and runs but freezes when it gets to the decrypt function. I tried it in Windows and Linux. Compiled with g++ in both cases.

I'm confused by the "* ePtr" part. Should it be initialized to something in the beginning of the for loop? Also it looks like an iterator but up to this point all I've done with iterators requires declareing the iterator in int main() or globally like for (vector<string>::iterator).

Anyone know why it's freezing up on me? Thanks
May 30, 2008 at 12:55am
That's because Grey Wolf made a typo when writing his response. Line 28 should read

for( ; * ePtr != '\0'; ++ ePtr ) --(* ePtr);

The encode function just adds one to every letter.
The decode function just subtracts one from every letter.

They are essentially the same function, except that the OP wrote one using an integer index into the string, and the other by manipulating the string pointer itself.

Enjoy.
Last edited on May 30, 2008 at 12:55am
May 30, 2008 at 1:07am
OK thanks, that fixed it. I guess I need to learn about pointers now.

I'll see if I can use a similar algorythm and write it another way with what I do know.
Topic archived. No new replies allowed.