Need help finding a few bugs

I have a program that I'm writing that has at least one bug in it, if someone could maybe point out a flaw in my code, that would be great, and also, I'm not the best at keeping my code... I guess the word is clean... If anyone has any tips to help that I can use to make my code more organized and readable, that would be great, if more information is needed, please let me know, and again, I apologize for any difficulties in reading my code.

EDIT: oh, jeez I'm sorry, I forgot to put what the bugs where, the user sets a file name, a password, and then text to be encrypted and stored in the file, the problem is that it doesnt seam to be decrypting right, and possibly not encrypting rite either, if you compile the code, and go through it(youll have to go through it twice, once to make the file, again to open the file to decrypt and read it), I can't seem to find the problem for the life of me...
you'll see what I mean if you run the code

EDIT: corrected some minor problems in the code pointed out by whitenite1...

EDIT: more corrections have been made

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237

#include<iostream>
#include<fstream>
#include<string>
#include<math.h>
#include<stdlib.h>
#include<conio.h>
#include<limits>

using namespace std;

int main(){

	char opt;
	string pass, passb, passc, fname, fstxt;
	int passp = 0;
	int plen,passl;

	cout<<"n for new file,\no to open an existing file...\n::"<<ends;
	cin>>opt;

	if(!(opt == 'n'|| opt == 'o')){
        cout<<"ERROR: Invalid Answer!\nPress any key to exit..."<<endl;
        getche();
        exit(1);
	}

	if(opt == 'n'){
		while(true){
			cout<<"\nInput the new file's name.\n::"<<ends;
			cin.ignore(numeric_limits<streamsize>::max(), '\n');
			getline(cin, fname);
			cout<<"\nIs \""<<fname<<"\" correct?\n::"<<ends;
			cin>>opt;
			if(opt == 'y'){
				break;
			}
			if(!(opt == 'y' || opt == 'n')){
				cout<<"\nInvalid Answer!"<<endl;
			}
		}
		while(true){
            cout<<"\nPassword protect?\n::"<<ends;
            cin>>opt;
            if(opt == 'y'){
                passp = 1;
                break;
            }
            if(opt == 'n'){
                break;
            }
            if(!(opt == 'y' || opt == 'n')){
                cout<<"\nInvalid Answer: Password cannot be set";
            }
		}
		while(passp == 1){
			cout<<"\nPassword?\n::"<<ends;
			cin>>pass;
			cout<<"\nRe-enter Password\n::"<<ends;
			cin>>passc;
			if(pass == passc){
                break;
			}
			else{
                cout<<"\nThe passwords don't match!\nTry again..."<<endl;
			}
		}
    fname.append(".ett");
    int x;
    x = fname.length();
    char fname2[x];
    for(int b = 0; b <= x; b++){
        fname2[b] = fname[b];
    }
	ofstream outf(fname2);
		if(!outf){
			cout<<"\nERROR:Could not create or open the file \""<<fname<<"\"!\nCheck if the file is write protected..."<<endl;
			cout<<"Press any key to exit..."<<endl;
			getche();
			exit(1);
        }
    if(passp == 1){
        string passb;
        passb = pass;
        passl = pass.length();
        for(int x = 0;x <= passl;x++){
            if(pass[x] != '\0'){
                pass[x]= ((pass[x] + 5) * 2) - 3;
                cout<<pass[x];
            }
        }

        cout<<endl;
        outf.put(passp);
        outf<<pass<<endl;
    }

    if(passp == 0){
        outf.put(passp);
    }

    if(!(passp == 1 || passp == 0)){
        cout<<"\nERROR: Something went wrong...\nPress any key to exit..."<<endl;
        getche();
        exit(1);
    }

    cout<<"\nInput text\n::"<<ends;
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
    getline(cin,fstxt);
    x = fstxt.length();
    passb = passc;
    int  y = passb.length();
    y = y - 1;
    x = x - 1;
    for(int b = 0,c = 0,ud = 0; b <= x; b++){
            fstxt[b] = (fstxt[b] + (passb[c] * 2)) - passb[c];
            cout<<fstxt[b];
            if(c == y){
                ud = 1;
            }
            if(c == 0){
                ud = 0;
            }
            for(;;){
                if(ud == 0 && c < y){
                    c = c + 1;
                }
                if(ud == 1 && c > 0){
                    c = c - 1;
                }
                break;
            }
    }
    while(true){
        cout<<"\nSave?\n::"<<ends;
        cin>>opt;
        if(opt == 'y'){
            outf<<fstxt;
            outf.close();
            break;
        }
        if(opt == 'n'){
            exit(0);
        }
        if(!(opt == 'n' || opt == 'y')){
            cout<<"\nERROR: Invalid Answer!"<<endl;
        }
    }
    cout<<"\nSaved!\nPress any key to exit..."<<endl;
    getche();
    exit(0);
	}

	if(opt == 'o'){
        cout<<"File name?\n::"<<ends;
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        getline(cin,fname);
        fname.append(".ett");
        int x;
        x = fname.length();
        char fname2[x];
        for(int b = 0; b <= x; b++){
            fname2[b] = fname[b];
        }
        ifstream inf(fname2);
        if(!inf){
            cout<<"\nERROR: The file \""<<fname2<<"\" could not be opened!\n";
            cout<<"Press any key to exit...\n";
            getche();
            exit(1);
        }
        passp = inf.get();
        if(passp == 1){
            getline(inf,passc);
            while(true){
                cout<<"\nPassword?\n::"<<ends;
                cin>>pass;
                passb = pass;
                for(x = 0;x <= passl;x++){
                    if(pass[x] != '\0'){
                        pass[x]= ((pass[x] + 5) * 2) - 3;
                    }
                }
                passl = pass.length();
                if(pass == passc){
                    cout<<"\nPassword correct"<<endl;
                    while(true){
                        getline(inf,fstxt);
                        x = fstxt.length();
                        int  y = passb.length();
                        y = y - 1;
                        x = x - 1;
                        int b = 0, c = 0, ud = 0;
                        for(b == 0,c == 0,ud == 0; b <= x; b++){
                            fstxt[b] = (fstxt[b] + passb[c]) - (passb[c]*2);
                            cout<<fstxt[b];
                            if(c == y){
                                ud = 1;
                            }
                            if(c == 0){
                                ud = 0;
                            }
                            for(;;){
                                if(ud == 0 && c < y){
                                    c = c + 1;
                                }
                                if(ud == 1 && c > 0){
                                    c = c - 1;
                                }
                                break;
                            }
                        }
                    break;
                    }
                cout<<endl<<"Press any key to exit..."<<endl;
                getche();
                break;
                }
                else{
                    cout<<"\nPassword incorrect"<<endl;
                }
            }
        }
        if(passp == 0){
            cout<<"\nFile is not password protected,\njust open it in a text editor like notepad..."<<endl;
            getche();
            exit(0);
        }
        else if(!(passp == 1 || 0)){
            cout<<"\nERROR: Something is wrong with the file..."<<endl;
            getche();
            exit(1);
        }
        }
}
Last edited on
And what are these bugs exactly?
oh, jeez I'm sorry, I forgot to put what the bugs where, the user sets a file name, a password, and then text to be encrypted and stored in the file, the problem is that it doesnt seam to be decrypting right, and possibly not encrypting rite either, if you compile the code, and go through it(youll have to go through it twice, once to make the file, again to open the file to decrypt and read it), I can't seem to find the problem for the life of me...

EDIT: youll see what I mean if you run the code
Last edited on
If no help with debugging can be received (which I completely understand, theirs a bit of code and its kinda messy), would be great if I could get some tips on keeping my code organized and more readable.
Try and narrow the code down to the functions that you suspect are not working.

Put couts at intermediate points where you know what you expect the variables to be. Then you can check what they actually are. When you've narrowed your problem to the last 10 lines or the last loop, you will probably find your problem.

@cod3Man15

One problem I immediately see, is if(!(opt == 'n'||'o')). You are not really checking for both inputs. It would be if(!(opt == 'n'||opt == 'o')). Try changing each occurrence of the double checking so the variable is actually being checked.
@whitenite1

I did not know that, I havnt had any problems with that so far, but I'll correct it, I'll try and find the bits of code that are possibly causing the problems, I might need to rewrite the whole thing, it mite be easier if I write functions outside of the main loop and then just call the functions when needed, I think it might make the code easier to read, debug, and build to, and I also think it might make the code a little shorter, I'll post the code I think is contributing to the problem.

EDIT: @stewbond

I dont think its all variables, I think I mite not be reversing the encryption and stuff write, I know that one thing I realized when checking this problem is that I had accidentally coded the program to use the encrypted password as the password to encrypt the other stuff, and that when it was unencrypting it was using the non modified true password, but I think that through my attempts to correct the code I found to be contributing to the problem I at some point added a problem that is causing very unwanted output but its very well hidden, also, something in the decryption process is causing my program to crash but I dont know what yet

EDIT: also, somewhere during the encryption and decryption process it adds an extra character each time...
Last edited on
ok, I found the bug, somehow a line of code got in there that changed the password to be used to decrypt the string into the password that was in the file which was modified, that was I think the biggest problem, but there where a couple smaller problems that I fixed also. I guess I was just to frustrated yesterday to notice the bug, thanks for the help that was given.
Topic archived. No new replies allowed.