私はプログラミングの原則1クラスの課題に取り組んでいる新入生のコンピュータサイエンスです。その一部には、ファイルがすでに存在する場合にファイルを上書きするかどうかをユーザーに尋ねることが含まれます。私はCode :: Blocksを使用しています。私が最初のプログラミングクラスでしかないことに留意してください。ここで私は、このために書いたコードは次のとおりです。C++プログラミング:すでにファイルが存在する場合にファイルを上書きするかどうかをユーザーに問い合わせ
#include <iostream>
#include <cstdlib>
#include <fstream>
using namespace std;
int main()
{
char outputFileName[81];
ifstream tempInputFile; // to check if file already exists
char overwrite;
ofstream outputFile;
system("cls");
cout << endl << endl;
cout << "Please enter the file for data to be written to: ";
cin >> outputFileName;
cout << endl << endl;
tempInputFile.open(outputFileName);
while (tempInputFile)
{
cout << "This file already exists. Would you like to overwrite? (Y/N):";
cin >> overwrite;
cout << endl << endl;
if (overwrite == 'Y' || overwrite == 'y')
tempInputFile.close();
// I also tried a block if statement here with .clear() before the .close()
else
{
tempInputFile.close();
cout << "Please enter the file for data to be written to: ";
cin >> outputFileName;
cout << endl << endl;
tempInputFile.open(outputFileName);
} // end else
} // end while
tempInputFile.close();
outputFile.open(outputFileName);
cout << "The file is ready to be written to..." << endl << endl;
cout << endl << endl;
system("pause");
return 0;
} // end main()
問題は、既存のファイルが入力された場合、ユーザーはファイルを上書きする「Y」と応答している彼らは上書きする場合、プログラムは再び尋ねますファイル。 2回目は "Y"に答える必要がありますが、なぜ2回目に尋ねるのか分かりません。私は最終的に正しく(do ... whileループを使用して)それを処理するいくつかのコードを書きましたが、なぜ他のコードが私がそれを行うべきだと思っていないのかを知りたいのです。誰かがこれを私に説明してもらえますか?
#include <iostream>
#include <cstdlib>
#include <fstream>
using namespace std;
int main()
{
char outputFileName[81];
ifstream tempInputFile;
char overwrite;
ofstream outputFile;
system("cls");
cout << endl << endl;
cout << "Please enter the file for data to be written to: ";
cin >> outputFileName;
cout << endl << endl;
tempInputFile.open(outputFileName);
if (tempInputFile)
do
{
cout << "This file already exists. Would you like to overwrite? (Y/N):";
cin >> overwrite;
cout << endl << endl;
if (overwrite == 'N' || overwrite == 'n')
{
tempInputFile.close();
cout << "Please enter the file for data to be written to: ";
cin >> outputFileName;
cout << endl << endl;
tempInputFile.open(outputFileName);
if (!tempInputFile)
overwrite = 'Y';
} // end if
} while (overwrite == 'N' || overwrite == 'n');
cout << "The file is ready to be written to..." << endl << endl;
tempInputFile.close();
outputFile.open(outputFileName);
cout << endl << endl;
system("pause");
return 0;
} // end main()
はい、わかりました。どうもありがとうございました! – dsfsu