「stackoverflowで答えが見つかりません」ではなく、「間違っていることを見ることができません」という大きな違いがあります。C++で見つからないファイルへの出力でエラーが発生しました
コードは以下のとおりです。それはかなり基本的なもので、ユーザーが作成したテキストファイルを取り込み、暗号化されたテキストファイルを吐き出します。この場合、ユーザは実際の文字の間にいくつの迷惑文字を置くかを指示します。 (IE:「Hello」という単語を1つのジャンク文字で暗号化したい場合は、「9H(eal〜lo)」のようになります。
私の問題は何らかの理由で入力ファイル私は前回の解読時と同じ設定を使ってファイルを読み込みましたが、今度はガベージ文字を読み込みますが、ファイルに出力するように指示すると、代わりに画面に出力されます!それは私が、正しく私のためにポイントを何かをやった意味ので何も、それが作成されているものの(出力ファイルに入れされていないように思える
コード:
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;
W帽子私はwhileループの先頭に貼り付けられた宣言変数ですが、これは暗号化だけでなく復号化もする大規模なコードの一部です。完全に動作するので解読部分を残しました。に問題があります。
ありがとうございました!
EDIT ::私はvisual C++ express 2008を使用しています。エラーはまったくなく、警告も出ません。
重要な編集 ファイルに出力中です!しかし、アスキー文字の代わりに数字を出力しています。また、その文字のためにガベージ文字を出力しています。 "infile.get(letter)"に戻ると、新しい文字は得られません。だから今は2倍の問題があるようです: 1)アスキー文字の代わりに数字を印字する。 2)実際のキャラクターの代わりにゴミを使用すると、それが得られるはずです。あなたが入力したときに、それが実際にtest.txt.txtと呼ばれる意味test.txtという...何かに名前を付けるならば、それが判明...「重要な編集」の第二部を発見 を回答
質問それをC++プログラムに組み込みます。ちょうどそれが、どんなプログラムもpooeyになる小さな、分、単純な詳細であることを示すために行く。 George Shoreにありがとうございます。間違った場所にある入力ファイルについてのあなたのコメントは、私に実際のアイテム名を試してみるというものです。
答えに協力いただいた皆様、ありがとうございます!
(自分自身や他人を混同しないように、一度に1つの部分を実行する)私は 'test.txt'ファイルをソースと同じディレクトリに置いて、実際に手で暗号化して保存しました同じファイルを作成し、コードの解読部分でテストしたので、正しい場所にあります。 – Jeff
あなたが投稿したときにコードを試みましたが、それは実際に数字を印刷していませんが、コンピュータが文字を読み取ることができないときに通常見えるブロック記号を印刷しています。私はcharとしてchar型を保つべきだと思いますか?私が理解していることを確認するだけです。 – Jeff
確かに 'c'はまだcharでなければなりません。あなたが使用しているテキストファイルは、ASCIIエンコードされたファイルか、UTF8などのファイルですか?あなたのコードを逐語的に使って行ったすべてのテストは正しく動作しています。私は今私を混乱させています... –