Программа, которая запрашивает у пользователя имя файла и открывает его.
Это было домашнее задание, которое уже было оценено-я просто хочу знать, что я сделал неправильно для своей собственной выгоды. Вот комментарий, который я получил в ответ:
-В fileAdder есть небольшая ошибка, когда последнее считываемое значение добавляется дважды. Похоже, что это проблема с текстовыми файлами в Linux/Unix, заканчивающимися новой строкой. "
Я использую терминал Mac.
' #include <iostream> #include <fstream> //Needed to use files. #include <string> using namespace std; int main() { //This declares the input and output files. ifstream input; ofstream output; string filename; int value, total = 0; cout << "Enter the file name: " << endl; cin >> filename; //This function opens file. input.open(filename.c_str()); //This checks to see if the file can be opened, //if yes, then it will calculate sum. if(input) { while(!input.eof()) { input >> value; total += value; } } //This closes the input file. input.close(); //This opens the output file. output.open("sum.txt"); //This is where a file will open and the calculated sum will be shown. if(output.is_open()) output << total; //This is if the file can not be opened. else cout << "Could not access the file." << endl; //This closes the output file. output.close(); return 0; }
Вот что требовалось в задании:
Напишите программу, которая запрашивает у пользователя имя файла, а затем пытается открыть его. Функция open нуждается в строке в стиле C (или строковом литерале) вместо строки C++. К счастью, существует функция c_str (), которая даст вам строковую версию строки C++ в стиле C. Например, вместо того, чтобы сказать "входной_файл.открыть(именем)", вы можете сказать "входной_файл.открыть(имяфайла.c_str())". Если входной файл существует и может быть открыт, программа должна прочитать список целых чисел в файле, который будет иметь одно целое число на строку, как в следующем примере:
14
9
12
-6
-30
8
109
Примечание: этот пример предназначен только для демонстрации формата входного файла. Ваша программа не будет выводить эти значения на консоль или в выходной файл.
Затем программа сложит вместе все целые числа в файле и откроет выходной файл под названием sum.txt, и запишите сумму в этот файл (только это число - никакого дополнительного текста). Не забудьте закрыть как входные, так и выходные файлы. Если входного файла нет (или он есть, но по какой-то причине не может быть открыт), программа должна просто распечатать "не удалось получить доступ к файлу".
Файл должен иметь имя: fileAdder.cpp
Что я уже пробовал:
Я заменяю:
int value, total = 0;
со следующим:
int value; / / value-некоторое положительное число n
int total = 0; / / total содержит сумму первых n положительных чисел
int number; / / количество чисел