Не как в "не могу найти ответ на stackoverflow", а как в "не вижу, что я делаю неправильно", большая разница!
В любом случае код прилагается ниже. То, что он делает, является довольно простым, он берет созданный пользователем текстовый файл и выплевывает тот, который был зашифрован. В этом случае пользователь сообщает, сколько ненужных символов нужно поместить между каждым реальным символом. (IE: если бы я хотел зашифровать слово «Hello» 1 символом мусора, это выглядело бы как «9H (eal ~ l.o») *
Моя проблема в том, что по какой-то причине он неправильно читает входной файл. Я использую ту же настройку для чтения в файле, что и ранее при расшифровке, но на этот раз он читает символы мусора, и когда я говорю, чтобы он выводился в файл, он выводит его на экран, и кажется, что ничего не помещается в выходной файл (хотя он создается, так что это означает, что я сделал что-то правильно, укажите мне!
Код:
string start;
char choice;
char letter;
int x;
int y;
int z;
char c;
string filename;
while(start == "enc")
{
x = 1;
y = 1;
cout << "How many garbage characters would you like between each correct character?: " ;
cin >> z;
cout << endl << "Please insert the name of the document you wish to encrypt, make sure you enter the name, and the file type (ie: filename.txt): " ;
cin >> filename;
ifstream infile(filename.c_str());
ofstream outfile("encrypted.txt", ios::out);
while(!infile.eof())
{
infile.get(letter);
while ((x - y) != z)
{
outfile << putchar(33 + rand() % 94);
x++;
}
while((x - y) == z)
{
outfile << letter;
y = 1;
x = 1;
}
}
outfile.close();
cout << endl << "Encryption complete...please return to directory of program, a new file named encrypted.txt will be there." << endl;
infile.close();
cout << "Do you wish to try again? Please press y then enter if yes (case sensitive).";
cin >> choice;
То, что я вставил выше начала цикла while, это переменные объявления, это часть гораздо большего кода, который не только будет шифровать, но и расшифровывать, я оставил часть дешифрования, так как она отлично работает, именно это часть, с которой у меня проблема.
Заранее спасибо за помощь!
РЕДАКТИРОВАТЬ :: Я использую Visual C ++ Express 2008, и он отвечает, что нет ни ошибок, ни предупреждений.
ВАЖНОЕ РЕДАКТИРОВАНИЕ
Оказывается, это вывод в файл! Однако он выводит числа вместо символов ascii, а также выводит символ мусора для буквы, которая должна быть. Когда он возвращается к «infile.get (letter)», он не получает нового персонажа. Так что сейчас кажется, что проблемы в 2 раза:
1) Печать цифр вместо символов ascii.
2) Использование мусора вместо реального символа, который он должен получать.
Ответ на вопрос
Обнаружил вторую часть в «Важном редактировании» ... получается, если вы называете что-то test.txt ... это означает, что оно на самом деле называется test.txt.txt, когда вы вводите его в программу на C ++. Просто хочу показать, что это крошечные, мельчайшие, простые детали, которые приводят к тому, что любая программа становится тупой.
Спасибо Джорджу Шору. Ваш комментарий о том, что входной файл находится не в том месте, дал мне идею попробовать настоящее название элемента.
Спасибо всем, кто помог с ответом!