Я пишу программу на C ++, которая в конечном итоге удалит определенное нежелательное форматирование из текстовых файлов.К сожалению, я все еще далек от достижения этой цели.
Моя текущая проблема - кажущаяся невозможность открывать текстовые файлы, которые находятся в заданном (вводимом пользователем) каталоге.Вот где я сейчас нахожусь, лишенный большей части ненужного объема:
//header, main function, bulk
//variable definitions
FILE * pFile;
//char filePathBuffer [512]; --unused, from older attempts
string currentLine = "", command = "", commandList = "ct", filePath = "defaultPath";
int quotePos = 0, slashPos = 0, bufferLength = 0;
bool contQuote = true, contSlash = true;
cout << "> ";
getline(cin, command);
//various exit commands
while(command != "q" && command != "quit" && command != "exit") {
//check for valid commands stored in a string
//--definitely not the best way to do it, but it's functional
if(commandList.find(command) == commandList.npos) {
puts("\nPlease enter a valid command.\n");
}
else if(command == "t") {
puts("\nPlease enter the file path:\n");
cout << "> ";
getline(cin, filePath);
//rip all quotes out of the entered file path
while(contQuote == true) {
quotePos = filePath.find("\"");
if(quotePos == filePath.npos)
contQuote = false;
else
filePath.erase(quotePos, 1);
}
pFile = fopen(filePath.c_str(), "r+");
//I've also tried doing countless variations directly in the code,
//as opposed to using user-input. No luck.
//pFile = fopen("C:\\test.txt", "r+");
if(pFile!=NULL) {
cout << "\nFile opened!" << endl << endl;
fclose (pFile);
}
else
cerr << "\nFile failed to open!\n\n";
}
//reset variables to default values
quotePos = -1;
slashPos = -1;
contQuote = true;
contSlash = true;
cout << "> ";
getline(cin, command);
}
Я на самом деле не уверен, должна ли входная строка иметь кавычки или нет - я не мог заставить их работатьпуть.Я также попытался сделать filePath.find ('\\'), чтобы найти обратную косую черту (чтобы затем я мог добавить вторую обратную косую черту в filePath для правильного анализа), но в итоге не получилось.
Ребята, вы знаете, как я могу исправить эту ситуацию?
Спасибо!