Форум программистов, компьютерный форум CyberForum.ru

Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.68
YELLOOOW
0 / 0 / 0
Регистрация: 05.09.2014
Сообщений: 6
05.09.2014, 22:42     Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" #1
Всем привет.
Есть два вопроса.
1. Нужно считать из txt файла числа в массив столбцов и строк. Код вроде правильный, но пишет ошибку:"Invalid allocation size: 4294967295 byte".
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <fstream> 
#include <algorithm> 
#include <ctime> 
#include <iostream> 
using namespace std; 
int main() 
{ 
int row, col; 
ifstream ifs("matrix.txt"); 
ifs >> row >> col; 
int ** a = new int * [row]; 
for (int r = 0; r < row; r++, cout << endl) { 
a[r] = new int [col]; 
for (int c = 0; c < col; c++) { 
ifs >> a[r][c]; 
cout << a[r][c] << ' '; 
} 
} 
for (int r = 0; r < row; r++) delete[] a[r]; 
delete[] a; 
cin.get(); 
return 0; 
}
2. Нужно считать из txt файла n чисел (которые идут в ряд через пробел), и записать их в массив. Тут возникли трудности... есть пример какого-то кода?

Извиняюсь за дурацкие вопросы.
Буду благодарен за ответ!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
05.09.2014, 23:28     Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" #2
YELLOOOW
1) Что находится в matrix.txt?
2)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <vector>
#include <fstream>
#include <cstdio>
 
int main()
{
    std::ifstream file("file.txt");
    if(file)
    {
        std::vector<int> vec;
        int num;
        while(file >> num) vec.push_back(num);
    }
    else
        std::perror("Error");
 
    file.close();
 
    return 0;
}
wrone
8 / 8 / 2
Регистрация: 19.12.2013
Сообщений: 87
06.09.2014, 02:26     Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" #3
я немного не понял 2. задание, но вот что у меня получилось. Извиняюсь заранее, я не так давно начал программировать

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <fstream>
 
using namespace std;
 
const int N = 15;
 
int main(){
 
   int arr[N] = {0};
 
   ifstream infile("lala.txt");
 
        int index = 0;
        while(!infile.eof())
        {
               infile >> arr[index];
               index++;
        }
 
            cout << endl;
            for(int i = 0; i < index; i++)
            {
                 cout << " " << arr[i];
            }
 
 
return 0;
}
текст файл lala выглядел так
1
2

31
2
221
2
19
2
8
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.09.2014, 02:32     Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" #4
Цитата Сообщение от wrone Посмотреть сообщение
я не так давно начал программировать
Открытие файла для чтения всегда проверять нужно.
wrone
8 / 8 / 2
Регистрация: 19.12.2013
Сообщений: 87
06.09.2014, 02:40     Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Открытие файла для чтения всегда проверять нужно.
что значит проверять? Еще я забыл добавить .close()
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.09.2014, 02:47     Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" #6
Цитата Сообщение от wrone Посмотреть сообщение
что значит проверять?
Открылся файл или нет. Может его не существует, или он не там, где нужно находится. 2 пост, 9 строка.
Цитата Сообщение от wrone Посмотреть сообщение
Еще я забыл добавить .close()
Правильно, но, в данном случае, необязательно: при завершении программы закроется.
YELLOOOW
0 / 0 / 0
Регистрация: 05.09.2014
Сообщений: 6
06.09.2014, 17:34  [ТС]     Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" #7
1. В файле находится матрица, допустим размерностью 4x4.
2. При запуске выбивает аналогичную ошибку, как и с (1).
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.09.2014, 18:34     Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" #8
Цитата Сообщение от YELLOOOW Посмотреть сообщение
1. В файле находится матрица, допустим размерностью 4x4.
2. При запуске выбивает аналогичную ошибку, как и с (1).
Содержимое файла покажите.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
06.09.2014, 19:37     Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" #9
YELLOOOW, мой вариант 2-го задания проверяли?
Ошибка конечно же будет что с вашим кодом, что с кодом wrone.
В случае wrone в файле может быть больше 15 элементов.
А в вашем случае:
C++
1
ifs >> row >> col;
Всё должно работать если в текстовом файле помимо элементов матрицы будет ещё два элемента отвечающие
за высоту и ширину (строки и столбцы), а именно:

Код
4 4
 1  2  3  4
 5  6  7  8
 9 10 11 12
13 14 15 16
YELLOOOW
0 / 0 / 0
Регистрация: 05.09.2014
Сообщений: 6
07.09.2014, 02:02  [ТС]     Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" #10
Цитата Сообщение от GuGo1991 Посмотреть сообщение
YELLOOOW, мой вариант 2-го задания проверяли?
Ошибка конечно же будет что с вашим кодом, что с кодом wrone.
В случае wrone в файле может быть больше 15 элементов.
А в вашем случае:
C++
1
ifs >> row >> col;
Всё должно работать если в текстовом файле помимо элементов матрицы будет ещё два элемента отвечающие
за высоту и ширину (строки и столбцы), а именно:

Код
4 4
 1  2  3  4
 5  6  7  8
 9 10 11 12
13 14 15 16
проверял, выбивает ошибку.
Какое у вас содержимое файла "file.txt"?
По поводу первого задания понял, спасибо.

Добавлено через 2 минуты
Цитата Сообщение от alsav22 Посмотреть сообщение
Содержимое файла покажите.
уже разобрался с первым =)
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
07.09.2014, 02:57     Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" #11
Цитата Сообщение от YELLOOOW Посмотреть сообщение
проверял, выбивает ошибку
А что за ошибка?
Цитата Сообщение от YELLOOOW Посмотреть сообщение
Какое у вас содержимое файла "file.txt"?
Целые числа
YELLOOOW
0 / 0 / 0
Регистрация: 05.09.2014
Сообщений: 6
07.09.2014, 15:47  [ТС]     Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" #12
Цитата Сообщение от GuGo1991 Посмотреть сообщение
А что за ошибка?

Целые числа
Invalid allocation size: 4294967295 byte
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.09.2014, 15:52     Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" #13
Цитата Сообщение от YELLOOOW Посмотреть сообщение
Invalid allocation size: 4294967295 byte
Какой код пробуете и содержимое файла покажите.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
07.09.2014, 16:33     Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" #14
Цитата Сообщение от alsav22 Посмотреть сообщение
содержимое файла покажите
Поддерживаю
YELLOOOW
0 / 0 / 0
Регистрация: 05.09.2014
Сообщений: 6
07.09.2014, 17:34  [ТС]     Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" #15
Цитата Сообщение от alsav22 Посмотреть сообщение
Какой код пробуете и содержимое файла покажите.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <vector>
#include <fstream>
#include <cstdio>
 
int main()
{
    std::ifstream file("D:\file.txt");
    if(file)
    {
        std::vector<int> vec;
        int num;
        while(file >> num) vec.push_back(num);
    }
    else
        std::perror("Error");
 
    file.close();
 
    return 0;
}
Содержимое:
3 2 4 1 2 5
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.09.2014, 18:03     Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" #16
У вас файл не должен открываться. В пути к файлу обратный слеш двойным должен быть.

Добавлено через 20 минут
Вот на это замените, будет понятней, что файл не окрылся:
C++
1
2
else
        std::cout << "Error" << std::endl;
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
07.09.2014, 23:33     Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" #17
alsav22, тут что-то странное, perror должен ловить эту ошибку...
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.09.2014, 23:58     Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" #18
Добавлено через 5 минут
Цитата Сообщение от GuGo1991 Посмотреть сообщение
alsav22, тут что-то странное, perror должен ловить эту ошибку...
Я не знаю, как работает perror(), может это он и ловит. У меня, при неправильном пути (с одинарными обратными слешами), выдаёт: "Error: Invalid argument".

Добавлено через 4 минуты
Это он про путь с одинарными обратными слешами выдаёт. Если обратные слеши двойными прописать, но файла нет, выдаёт: "Error: No such file or directory"
Поэтому:
Цитата Сообщение от alsav22 Посмотреть сообщение
Вот на это замените, будет понятней, что файл не окрылся:
C++
1
2
else
    std::cout << "Error" << std::endl;
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
08.09.2014, 00:09     Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" #19
Так получается это не perror выдаёт, до него дело и не доходит.
alsav22, у вас при else std::cout << "Error" << std::endl; с одним слешем в пути Error печатает?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2014, 00:21     Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte"
Еще ссылки по теме:

Бинарный поиск, ошибка: "Invalid operands to binary expression" C++
Указатели, Динамическое выделение памяти, Ошибка invalid allocation size C++
Invalid allocation size 4294967295 bytes C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.09.2014, 00:21     Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte" #20
Цитата Сообщение от GuGo1991 Посмотреть сообщение
Так получается это не perror выдаёт, до него дело и не доходит.
Вы про кого? Про меня или про ТС?
Цитата Сообщение от GuGo1991 Посмотреть сообщение
alsav22, у вас при else std::cout << "Error" << std::endl; с одним слешем в пути Error печатает?
Да. Ну, если файл не открылся, то else, и что там прописано вывести, то и выводит. Но студия, про путь с одинарными обратными слешами, предупреждение пишет. Например, на такой путь:
C++
1
std::ifstream file("D:\MY C++Projects\LAB\file.txt");
warning C4129: M: неизвестная escape-последовательность
warning C4129: L: неизвестная escape-последовательность
Добавлено через 1 минуту
Кстати, в коде ТС, в 15 посте, по подсветке видно, что путь неправильный.

Добавлено через 46 секунд
Цитата Сообщение от alsav22 Посмотреть сообщение
с одним слешем
С одним обратным, прямой может быть одинарным.
Yandex
Объявления
08.09.2014, 00:21     Считывание чисел из файла в массив и ошибка: "Invalid allocation size: 4294967295 byte"
Ответ Создать тему
Опции темы

Текущее время: 23:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru