у меня есть функция, которая должна внести в переменную числа из файла, но она не работает, числа из файла не записываются в массив, помогите разобраться
void altf(char way[])
{
int nums[100] = { 0 };
int k = 0;
cout << "Введите путь к папке, в которой хранится файл: "; cin >> way;
cout << "Введите количество чисел в файле: "; cin >> k;
ifstream f1(way);
f1.open (way, ios::in);
if (! f1.is _open()) {
cout << "Файл не удаётся открыть!" << endl;
}
else{
cout << "Файл открыт успешно!" << endl;
for (int i = 0; i < k; i++) {
f1 >> nums[i];
}
}
}
C/C++
Вопрос по c++
Если это вся функция, то откуда уверенность что в массив ничего не записывается?
По сути массив создается, заполняется, и после этого уничтожается - ибо функция заканчивается.
кстати cin не следует использовать с char* которым является way.
По сути массив создается, заполняется, и после этого уничтожается - ибо функция заканчивается.
кстати cin не следует использовать с char* которым является way.
Мб проблема в том, что ты уже открыл файл вызовом `f1.open(way,ios::in);`, поэтому вызов функции `open` не работает для этого файла, нужно удалить эту строку и проверить, удалось ли открыть файл с помощью `if (!f1)`.
void altf(char way[]) {
int nums[100] = {0};
int k = 0;
cout << "Введите путь к папке, в которой хранится файл: ";
cin >> way;
cout << "Введите количество чисел в файле: ";
cin >> k;
ifstream f1(way);
if (!f1) {
cout << "Файл не удаётся открыть!" << endl;
} else {
cout << "Файл открыт успешно!" << endl;
for (int i = 0; i < k && i < 100; i++) { // добавлена проверка на превышение лимита массива
f1 >> nums[i];
}
}
}
void altf(char way[]) {
int nums[100] = {0};
int k = 0;
cout << "Введите путь к папке, в которой хранится файл: ";
cin >> way;
cout << "Введите количество чисел в файле: ";
cin >> k;
ifstream f1(way);
if (!f1) {
cout << "Файл не удаётся открыть!" << endl;
} else {
cout << "Файл открыт успешно!" << endl;
for (int i = 0; i < k && i < 100; i++) { // добавлена проверка на превышение лимита массива
f1 >> nums[i];
}
}
}
void altf(char way[])
{
int nums[100] = { 0 };
int k = 0;
cout > way;
cout > k;
ifstream f1(way);
if (!f1.is_open()) {
cout
[Сгенерировано нейросетью]
Ваша функция altf открывает файл дважды: сначала с помощью конструктора ifstream f(way), а затем с помощью метода f.open (way, ios::in). Вам нужно удалить строку f.open (way, ios::in) и оставить только конструктор ifstream f(way). Это должно решить проблему.
Также обратите внимание на то, что вы не закрываете файл после его использования. После завершения работы с файлом рекомендуется закрыть его с помощью метода f.close().
Ваша функция altf открывает файл дважды: сначала с помощью конструктора ifstream f(way), а затем с помощью метода f.open (way, ios::in). Вам нужно удалить строку f.open (way, ios::in) и оставить только конструктор ifstream f(way). Это должно решить проблему.
Также обратите внимание на то, что вы не закрываете файл после его использования. После завершения работы с файлом рекомендуется закрыть его с помощью метода f.close().
роблема вашей функции связана с использованием метода open() для ifstream. В строке f1.open (way, ios::in); вы пытаетесь открыть файл, но перед этим уже вызвали конструктор ifstream, который открыл файл по умолчанию с флагом ios::in. Поэтому нужно либо удалить эту строку, либо использовать конструктор ifstream без параметров, чтобы не открывать файл дважды. Вот исправленный код:
void altf(char way[])
{
int nums[100] = { 0 };
int k = 0;
cout > way;
cout > k;
ifstream f1;
f1.open(way);
if (!f1.is_open()) {
cout
Похожие вопросы
- Меня бесит вопрос по c++ и c#
- Вопрос по C++
- Вопросы о C++
- Вопрос про c++.
- День добрый \[-_-]/ вопрос по вузовскому программированию на си(C)
- C и C++ вопросы
- У меня вот такой вопрос, к опытным программистам. По поводу c++, и математики.
- C++ вопрос по задаче. Здача лёгкая
- Какие из этих книг вы посоветуете прочесть в первую очередь чтобы повысить свои знания в C/C++?
- Задача по C++